python-amazon-ad-api 0.6.5__tar.gz → 0.6.7__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-0.6.5 → python_amazon_ad_api-0.6.7}/PKG-INFO +3 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/README.md +1 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/brand_metrics.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/dsp/reports.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/__init__.py +3 -1
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/bid_recommendations.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/campaigns.py +2 -2
- python_amazon_ad_api-0.6.7/ad_api/api/sb/forecast.py +7 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/keywords.py +3 -3
- python_amazon_ad_api-0.6.7/ad_api/api/sb/keywords_recommendations.py +7 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/landing_page_asins.py +1 -1
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/media.py +4 -4
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/negative_product_targeting.py +4 -4
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/product_targeting.py +4 -4
- python_amazon_ad_api-0.6.7/ad_api/api/sb/recommendations.py +7 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/reports.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/snapshots.py +1 -1
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/stores.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/targeting_recommendations.py +4 -4
- python_amazon_ad_api-0.6.7/ad_api/api/sb/themes.py +79 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/ad_groups.py +3 -3
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/bid_recommendations.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/campaigns.py +3 -3
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/creatives.py +1 -1
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/negative_product_targeting.py +3 -3
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/product_ads.py +3 -3
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/product_targeting.py +3 -3
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/reports.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/snapshots.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/targeting_recommendations.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/ad_groups.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/bid_recommendations.py +3 -3
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/bid_recommendations_v3.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/campaign_negative_keywords.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/keywords.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/negative_keywords.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/negative_product_targeting.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/product_ads.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/product_recommendations.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/product_targeting.py +6 -6
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/reports.py +1 -1
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/snapshots.py +2 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/suggested_keywords.py +2 -2
- python_amazon_ad_api-0.6.7/ad_api/version.py +1 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/python_amazon_ad_api.egg-info/PKG-INFO +3 -2
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/python_amazon_ad_api.egg-info/SOURCES.txt +1 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/python_amazon_ad_api.egg-info/requires.txt +1 -1
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/setup.cfg +1 -1
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/setup.py +2 -2
- python_amazon_ad_api-0.6.5/ad_api/api/sb/forecast.py +0 -7
- python_amazon_ad_api-0.6.5/ad_api/api/sb/keywords_recommendations.py +0 -7
- python_amazon_ad_api-0.6.5/ad_api/api/sb/recommendations.py +0 -7
- python_amazon_ad_api-0.6.5/ad_api/version.py +0 -1
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/LICENSE +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/__init__.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/__init__.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/account.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/advertising_test_account.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/attribution.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/audiences.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/billing.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/creative_assets.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/dsp/__init__.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/dsp/access_token_client.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/dsp/client.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/dsp/credential_provider.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/eligibility.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/exports.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/history.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/insights.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/invoices.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/localization.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/manager_accounts.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/metadata.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/portfolios.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/portfolios_v3.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/profiles.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/recommendations.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/reports.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/ad_creatives_v4.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/ad_groups.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/ad_groups_v4.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/ads_v4.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/benchmarks.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/brands.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/campaigns_v4.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/moderation.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/negative_keywords.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/__init__.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/brand_safety.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/budget_rules.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/campaigns_budget_usage.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/forecast.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/recommendations.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/__init__.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/ad_groups_v3.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/budget_initial_recommendation.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/budget_recommendations.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/budget_rules.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/budget_rules_recommendations.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/campaign_consolidated_recommendations.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/campaign_negative_keywords_v3.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/campaign_negative_targets.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/campaigns.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/campaigns_budget_usage.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/campaigns_v3.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/campaings_optimization.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/keywords_v3.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/negative_keywords_v3.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/negative_product_targeting_v3.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/product_ads_v3.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/product_targeting_v3.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/ranked_keywords_recommendations.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sp/schedule_based_bid_optimization.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/stores.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/stream.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/validation_configurations.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/auth/__init__.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/auth/access_token_client.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/auth/access_token_response.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/auth/credentials.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/auth/exceptions.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/__init__.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/api_response.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/base_client.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/client.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/config.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/credential_provider.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/exceptions.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/helpers.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/marketplaces.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/base/utils.py +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/pyproject.toml +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/python_amazon_ad_api.egg-info/dependency_links.txt +0 -0
- {python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/python_amazon_ad_api.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-amazon-ad-api
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.7
|
|
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
|
|
@@ -14,7 +14,7 @@ Description-Content-Type: text/markdown
|
|
|
14
14
|
License-File: LICENSE
|
|
15
15
|
Requires-Dist: requests<2.33.0,>=2.27.1
|
|
16
16
|
Requires-Dist: six<1.18,>=1.16
|
|
17
|
-
Requires-Dist: cachetools<6.
|
|
17
|
+
Requires-Dist: cachetools<6.3,>=5.0
|
|
18
18
|
Requires-Dist: pycryptodome<3.24,>=3.13
|
|
19
19
|
Requires-Dist: pytz<2026.0,>=2021.3
|
|
20
20
|
Requires-Dist: confuse<2.1,>=1.7
|
|
@@ -346,6 +346,7 @@ There is a new version 3 of Sponsored Product API, please check the [migration g
|
|
|
346
346
|
* [Moderation](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/moderation.html)
|
|
347
347
|
* [Reports](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/reports.html)
|
|
348
348
|
* [Snapshots](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/snapshots.html)
|
|
349
|
+
* [Themes](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/themes.html)
|
|
349
350
|
|
|
350
351
|
### [Modules Available Sponsored Brands 4.0](https://python-amazon-ad-api.readthedocs.io/en/latest/sb_v4.html)
|
|
351
352
|
|
|
@@ -318,6 +318,7 @@ There is a new version 3 of Sponsored Product API, please check the [migration g
|
|
|
318
318
|
* [Moderation](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/moderation.html)
|
|
319
319
|
* [Reports](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/reports.html)
|
|
320
320
|
* [Snapshots](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/snapshots.html)
|
|
321
|
+
* [Themes](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/themes.html)
|
|
321
322
|
|
|
322
323
|
### [Modules Available Sponsored Brands 4.0](https://python-amazon-ad-api.readthedocs.io/en/latest/sb_v4.html)
|
|
323
324
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class BrandMetrics(Client):
|
|
@@ -26,7 +26,7 @@ class BrandMetrics(Client):
|
|
|
26
26
|
ApiResponse
|
|
27
27
|
|
|
28
28
|
"""
|
|
29
|
-
return self._request(fill_query_params(kwargs.pop('path')), data=kwargs.pop('body'), params=kwargs)
|
|
29
|
+
return self._request(fill_query_params(kwargs.pop('path')), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
30
30
|
|
|
31
31
|
@sp_endpoint('/insights/brandMetrics/report/{}', method='GET')
|
|
32
32
|
def get_report(self, reportId, **kwargs) -> ApiResponse:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from ad_api.api.dsp.client import DspClient as Client
|
|
2
|
-
from ad_api.base import sp_endpoint, fill_query_params, ApiResponse
|
|
2
|
+
from ad_api.base import sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
class Reports(Client):
|
|
@@ -35,7 +35,7 @@ class Reports(Client):
|
|
|
35
35
|
ApiResponse
|
|
36
36
|
"""
|
|
37
37
|
path = fill_query_params(kwargs.pop('path'), dspAccountId)
|
|
38
|
-
return self._request(path, data=kwargs.pop('body'), headers={'Accept': accept}, params=kwargs)
|
|
38
|
+
return self._request(path, data=Utils.convert_body(kwargs.pop('body'), False), headers={'Accept': accept}, params=kwargs)
|
|
39
39
|
|
|
40
40
|
@sp_endpoint('/accounts/{}/dsp/reports/{}', method='GET')
|
|
41
41
|
def get_report(self, dspAccountId, reportId, accept='application/vnd.dspgetreports.v3+json', **kwargs) -> ApiResponse:
|
|
@@ -21,6 +21,7 @@ from .media import Media
|
|
|
21
21
|
from .reports import Reports
|
|
22
22
|
from .snapshots import Snapshots
|
|
23
23
|
from .benchmarks import Benchmarks
|
|
24
|
+
from .themes import Themes
|
|
24
25
|
|
|
25
26
|
__all__ = [
|
|
26
27
|
"Brands",
|
|
@@ -45,5 +46,6 @@ __all__ = [
|
|
|
45
46
|
"Media",
|
|
46
47
|
"Reports",
|
|
47
48
|
"Snapshots",
|
|
48
|
-
"Benchmarks"
|
|
49
|
+
"Benchmarks",
|
|
50
|
+
"Themes"
|
|
49
51
|
]
|
{python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/bid_recommendations.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class BidRecommendations(Client):
|
|
@@ -32,4 +32,4 @@ class BidRecommendations(Client):
|
|
|
32
32
|
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
35
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
@@ -86,7 +86,7 @@ class Campaigns(Client):
|
|
|
86
86
|
|
|
87
87
|
**match_type** (NegativeMatchType): [optional] The negative match type. For more information, see negative keyword match types in the Amazon Advertising support center. Enum:[ negativeExact, negativePhrase ]
|
|
88
88
|
"""
|
|
89
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
89
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
90
90
|
|
|
91
91
|
@sp_endpoint('/sb/campaigns', method='PUT')
|
|
92
92
|
@Utils.deprecated
|
|
@@ -113,7 +113,7 @@ class Campaigns(Client):
|
|
|
113
113
|
| **end_date** (EndDate > string) [optional] The YYYYMMDD end date of the campaign. Must be greater than the value specified in the startDate field. If this property is not included in the request, the endDate value is not updated. If set to null, endDate is deleted from the draft campaign. [nullable: true] [pattern: ^\\d{8}$]
|
|
114
114
|
|
|
115
115
|
"""
|
|
116
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
116
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
117
117
|
|
|
118
118
|
@sp_endpoint('/sb/campaigns/{}', method='GET')
|
|
119
119
|
def get_campaign(self, campaignId, **kwargs) -> ApiResponse:
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Forecast(Client):
|
|
5
|
+
@sp_endpoint('/sb/campaigns/shopperSegments/forecast', method='POST')
|
|
6
|
+
def list_forecast(self, **kwargs) -> ApiResponse:
|
|
7
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Keywords(Client):
|
|
@@ -50,7 +50,7 @@ class Keywords(Client):
|
|
|
50
50
|
Returns:
|
|
51
51
|
| ApiResponse
|
|
52
52
|
"""
|
|
53
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
53
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
54
54
|
|
|
55
55
|
@sp_endpoint('/sb/keywords', method='POST')
|
|
56
56
|
def create_keywords(self, **kwargs) -> ApiResponse:
|
|
@@ -75,7 +75,7 @@ class Keywords(Client):
|
|
|
75
75
|
Returns:
|
|
76
76
|
| ApiResponse
|
|
77
77
|
"""
|
|
78
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
78
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
79
79
|
|
|
80
80
|
@sp_endpoint('/sb/keywords/{}', method='GET')
|
|
81
81
|
def get_keyword(self, keywordId, **kwargs) -> ApiResponse:
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class KeywordsRecommendations(Client):
|
|
5
|
+
@sp_endpoint('/sb/recommendations/keyword', method='POST')
|
|
6
|
+
def list_keywords_recommendations(self, **kwargs) -> ApiResponse:
|
|
7
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Media(Client):
|
|
@@ -23,12 +23,12 @@ class Media(Client):
|
|
|
23
23
|
| ApiResponse
|
|
24
24
|
|
|
25
25
|
"""
|
|
26
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
26
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
27
27
|
|
|
28
28
|
@sp_endpoint('/media/complete', method='PUT')
|
|
29
29
|
def complete_media(self, **kwargs) -> ApiResponse:
|
|
30
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
30
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
31
31
|
|
|
32
32
|
@sp_endpoint('/media/describe', method='GET')
|
|
33
33
|
def describe_media(self, **kwargs) -> ApiResponse:
|
|
34
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
34
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class NegativeTargets(Client):
|
|
@@ -28,7 +28,7 @@ class NegativeTargets(Client):
|
|
|
28
28
|
Returns:
|
|
29
29
|
ApiResponse
|
|
30
30
|
"""
|
|
31
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
31
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
32
32
|
|
|
33
33
|
@sp_endpoint('/sb/negativeTargets', method='PUT')
|
|
34
34
|
def edit_negative_targets(self, **kwargs) -> ApiResponse:
|
|
@@ -43,7 +43,7 @@ class NegativeTargets(Client):
|
|
|
43
43
|
Returns:
|
|
44
44
|
ApiResponse
|
|
45
45
|
"""
|
|
46
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
46
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
47
47
|
|
|
48
48
|
@sp_endpoint('/sb/negativeTargets', method='POST')
|
|
49
49
|
def create_negative_targets(self, **kwargs) -> ApiResponse:
|
|
@@ -63,7 +63,7 @@ class NegativeTargets(Client):
|
|
|
63
63
|
Returns:
|
|
64
64
|
ApiResponse
|
|
65
65
|
"""
|
|
66
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
66
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
67
67
|
|
|
68
68
|
@sp_endpoint('/sb/negativeTargets/{}', method='GET')
|
|
69
69
|
def get_negative_target(self, negativeTargetId, **kwargs) -> ApiResponse:
|
{python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/product_targeting.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Targets(Client):
|
|
@@ -31,7 +31,7 @@ class Targets(Client):
|
|
|
31
31
|
"""
|
|
32
32
|
json_version = 'application/vnd.sblisttargetsresponse.v' + str(version) + "+json"
|
|
33
33
|
headers = {'Accept': json_version}
|
|
34
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs, headers=headers)
|
|
34
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
35
35
|
|
|
36
36
|
@sp_endpoint('/sb/targets', method='PUT')
|
|
37
37
|
def edit_products_targets(self, **kwargs) -> ApiResponse:
|
|
@@ -49,7 +49,7 @@ class Targets(Client):
|
|
|
49
49
|
ApiResponse
|
|
50
50
|
|
|
51
51
|
"""
|
|
52
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
52
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
53
53
|
|
|
54
54
|
@sp_endpoint('/sb/targets', method='POST')
|
|
55
55
|
def create_products_targets(self, **kwargs) -> ApiResponse:
|
|
@@ -65,7 +65,7 @@ class Targets(Client):
|
|
|
65
65
|
Returns:
|
|
66
66
|
ApiResponse
|
|
67
67
|
"""
|
|
68
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
68
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
69
69
|
|
|
70
70
|
@sp_endpoint('/sb/targets/{}', method='GET')
|
|
71
71
|
def get_products_target(self, targetId, **kwargs) -> ApiResponse:
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Recommendations(Client):
|
|
5
|
+
@sp_endpoint('/sb/recommendations/creative/headline', method='POST')
|
|
6
|
+
def list_recommendations(self, **kwargs) -> ApiResponse:
|
|
7
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Reports(Client):
|
|
@@ -27,7 +27,7 @@ class Reports(Client):
|
|
|
27
27
|
ApiResponse
|
|
28
28
|
|
|
29
29
|
"""
|
|
30
|
-
return self._request(fill_query_params(kwargs.pop('path'), recordType), data=kwargs.pop('body'), params=kwargs)
|
|
30
|
+
return self._request(fill_query_params(kwargs.pop('path'), recordType), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
31
31
|
|
|
32
32
|
@sp_endpoint('/v2/reports/{}', method='GET')
|
|
33
33
|
def get_report(self, reportId, **kwargs) -> ApiResponse:
|
|
@@ -14,7 +14,7 @@ class Snapshots(Client):
|
|
|
14
14
|
Returns:
|
|
15
15
|
ApiResponse
|
|
16
16
|
"""
|
|
17
|
-
return self._request(fill_query_params(kwargs.pop('path'), recordType), data=kwargs.pop('body'), params=kwargs)
|
|
17
|
+
return self._request(fill_query_params(kwargs.pop('path'), recordType), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
18
18
|
|
|
19
19
|
@sp_endpoint('/v2/hsa/snapshots/{}', method='GET')
|
|
20
20
|
@Utils.deprecated
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Stores(Client):
|
|
@@ -41,4 +41,4 @@ class Stores(Client):
|
|
|
41
41
|
@sp_endpoint('/stores/assets', method='POST')
|
|
42
42
|
def create_asset(self, contentDisposition, contentType, **kwargs) -> ApiResponse:
|
|
43
43
|
headers = {'Content-Disposition': contentDisposition, 'Content-Type': contentType}
|
|
44
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs, headers=headers)
|
|
44
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
{python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sb/targeting_recommendations.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class TargetsRecommendations(Client):
|
|
@@ -21,7 +21,7 @@ class TargetsRecommendations(Client):
|
|
|
21
21
|
Returns:
|
|
22
22
|
ApiResponse
|
|
23
23
|
"""
|
|
24
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
24
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
25
25
|
|
|
26
26
|
@sp_endpoint('/sb/recommendations/targets/category', method='POST')
|
|
27
27
|
def list_category_targets(self, **kwargs) -> ApiResponse:
|
|
@@ -36,7 +36,7 @@ class TargetsRecommendations(Client):
|
|
|
36
36
|
Returns:
|
|
37
37
|
ApiResponse
|
|
38
38
|
"""
|
|
39
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
39
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
40
40
|
|
|
41
41
|
@sp_endpoint('/sb/recommendations/targets/brand', method='POST')
|
|
42
42
|
def list_brand_targets(self, **kwargs) -> ApiResponse:
|
|
@@ -52,4 +52,4 @@ class TargetsRecommendations(Client):
|
|
|
52
52
|
Returns:
|
|
53
53
|
ApiResponse
|
|
54
54
|
"""
|
|
55
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
55
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Themes(Client):
|
|
5
|
+
"""
|
|
6
|
+
Amazon Ads API - Sponsored Brands - Theme Targeting
|
|
7
|
+
|
|
8
|
+
Theme targeting automatically targets keywords related to your brand or landing pages.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
@sp_endpoint('/sb/themes/list', method='POST')
|
|
12
|
+
def list_themes(self, **kwargs) -> ApiResponse:
|
|
13
|
+
r"""
|
|
14
|
+
Gets a list of theme targets associated with the client identifier, filtered by specified criteria.
|
|
15
|
+
|
|
16
|
+
Request Body
|
|
17
|
+
| '**nextToken**': *string*, {'description': 'Token for pagination. Operations that return paginated results include a pagination token in this field.'}
|
|
18
|
+
| '**maxResults**': *number*, {'description': 'Maximum number of results to return. Defaults to API maximum.'}
|
|
19
|
+
| '**campaignIdFilter**': *object*, {'description': 'List of campaign identifiers to filter by (max 100).'}
|
|
20
|
+
| '**adGroupIdFilter**': *object*, {'description': 'List of ad group identifiers to filter by (max 100).'}
|
|
21
|
+
| '**themeIdFilter**': *object*, {'description': 'List of theme target identifiers to filter by (max 100).'}
|
|
22
|
+
| '**stateFilter**': *object*, {'description': 'List of theme target states to filter by. Valid values: enabled, paused, archived. Default: enabled, paused.'}
|
|
23
|
+
| '**themeTypeFilter**': *object*, {'description': 'List of theme types to filter by. Valid values: KEYWORDS_RELATED_TO_YOUR_BRAND, KEYWORDS_RELATED_TO_YOUR_LANDING_PAGES.'}
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
| ApiResponse
|
|
27
|
+
"""
|
|
28
|
+
headers = {'Accept': 'application/vnd.sbthemeslistresponse.v3+json'}
|
|
29
|
+
body = Utils.convert_body(kwargs.pop('body'), wrap=False)
|
|
30
|
+
return self._request(kwargs.pop('path'), data=body, params=kwargs, headers=headers)
|
|
31
|
+
|
|
32
|
+
@sp_endpoint('/sb/themes', method='POST')
|
|
33
|
+
def create_themes(self, **kwargs) -> ApiResponse:
|
|
34
|
+
r"""
|
|
35
|
+
Create one or more theme targets.
|
|
36
|
+
|
|
37
|
+
Note that theme targets can be created on multi-adGroup campaigns where campaign serving status is not archived, terminated, rejected, or ended.
|
|
38
|
+
Note that ad group state must not be archived.
|
|
39
|
+
Note that only one target can be created for each themeType per adGroup.
|
|
40
|
+
Note that this operation supports a maximum list size of 100 theme targets.
|
|
41
|
+
|
|
42
|
+
Request Body
|
|
43
|
+
| '**themes**': *array*, {'description': 'List of theme targets to create (max 100).'}
|
|
44
|
+
| '**adGroupId**': *string*, {'description': 'The identifier of the ad group'}
|
|
45
|
+
| '**campaignId**': *string*, {'description': 'The identifier of the campaign'}
|
|
46
|
+
| '**themeType**': *string*, {'description': 'Theme type', 'Enum': 'KEYWORDS_RELATED_TO_YOUR_BRAND, KEYWORDS_RELATED_TO_YOUR_LANDING_PAGES'}
|
|
47
|
+
| '**bid**': *number*, {'description': 'The bid amount'}
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
| ApiResponse
|
|
51
|
+
"""
|
|
52
|
+
headers = {'Accept': 'application/vnd.sbthemescreateresponse.v3+json'}
|
|
53
|
+
body = Utils.convert_body(kwargs.pop('body'), wrap=False)
|
|
54
|
+
return self._request(kwargs.pop('path'), data=body, params=kwargs, headers=headers)
|
|
55
|
+
|
|
56
|
+
@sp_endpoint('/sb/themes', method='PUT')
|
|
57
|
+
def update_themes(self, **kwargs) -> ApiResponse:
|
|
58
|
+
r"""
|
|
59
|
+
Updates one or more theme targets.
|
|
60
|
+
|
|
61
|
+
Note that theme targets can be updated on multi-adGroup campaigns where campaign serving status is not archived, terminated, rejected, or ended.
|
|
62
|
+
Note that ad group state must not be archived.
|
|
63
|
+
Note that this operation supports a maximum list size of 100 theme targets.
|
|
64
|
+
Note that bid is only mutable when the corresponding campaign does not have any enabled optimization rule.
|
|
65
|
+
|
|
66
|
+
Request Body
|
|
67
|
+
| '**themes**': *array*, {'description': 'List of theme targets to update (max 100).'}
|
|
68
|
+
| '**themeId**': *string*, {'description': 'The identifier of the theme target'}
|
|
69
|
+
| '**adGroupId**': *string*, {'description': 'The identifier of the ad group'}
|
|
70
|
+
| '**campaignId**': *string*, {'description': 'The identifier of the campaign'}
|
|
71
|
+
| '**state**': *string*, {'description': 'Theme target state', 'Enum': 'enabled, paused, archived'}
|
|
72
|
+
| '**bid**': *number*, {'description': 'The bid amount'}
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
| ApiResponse
|
|
76
|
+
"""
|
|
77
|
+
headers = {'Accept': 'application/vnd.sbthemesupdateresponse.v3+json'}
|
|
78
|
+
body = Utils.convert_body(kwargs.pop('body'), wrap=False)
|
|
79
|
+
return self._request(kwargs.pop('path'), data=body, params=kwargs, headers=headers)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class AdGroups(Client):
|
|
@@ -49,7 +49,7 @@ class AdGroups(Client):
|
|
|
49
49
|
ApiResponse
|
|
50
50
|
|
|
51
51
|
"""
|
|
52
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
52
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
53
53
|
|
|
54
54
|
@sp_endpoint('/sd/adGroups', method='POST')
|
|
55
55
|
def create_ad_groups(self, **kwargs) -> ApiResponse:
|
|
@@ -71,7 +71,7 @@ class AdGroups(Client):
|
|
|
71
71
|
ApiResponse
|
|
72
72
|
|
|
73
73
|
"""
|
|
74
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
74
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
75
75
|
|
|
76
76
|
@sp_endpoint('/sd/adGroups/{}', method='GET')
|
|
77
77
|
def get_ad_group(self, adGroupId, **kwargs) -> ApiResponse:
|
{python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/bid_recommendations.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class BidRecommendations(Client):
|
|
@@ -88,4 +88,4 @@ class BidRecommendations(Client):
|
|
|
88
88
|
"""
|
|
89
89
|
contentType = 'application/vnd.sdtargetingrecommendations.v3.2+json'
|
|
90
90
|
headers = {'Content-Type': contentType}
|
|
91
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs, headers=headers)
|
|
91
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Campaigns(Client):
|
|
@@ -53,7 +53,7 @@ class Campaigns(Client):
|
|
|
53
53
|
ApiResponse
|
|
54
54
|
|
|
55
55
|
"""
|
|
56
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
56
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
57
57
|
|
|
58
58
|
@sp_endpoint('/sd/campaigns', method='POST')
|
|
59
59
|
def create_campaigns(self, **kwargs) -> ApiResponse:
|
|
@@ -81,7 +81,7 @@ class Campaigns(Client):
|
|
|
81
81
|
ApiResponse
|
|
82
82
|
|
|
83
83
|
"""
|
|
84
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
84
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
85
85
|
|
|
86
86
|
@sp_endpoint('/sd/campaigns/{}', method='GET')
|
|
87
87
|
def get_campaign(self, campaignId, **kwargs) -> ApiResponse:
|
|
@@ -171,7 +171,7 @@ class Creatives(Client):
|
|
|
171
171
|
Returns
|
|
172
172
|
ApiResponse
|
|
173
173
|
"""
|
|
174
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
174
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
175
175
|
|
|
176
176
|
@sp_endpoint('/sd/moderation/creatives', method='GET')
|
|
177
177
|
def list_moderation_creatives(self, **kwargs) -> ApiResponse:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class NegativeTargets(Client):
|
|
@@ -49,7 +49,7 @@ class NegativeTargets(Client):
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
"""
|
|
52
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
52
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
53
53
|
|
|
54
54
|
@sp_endpoint('/sd/negativeTargets', method='POST')
|
|
55
55
|
def create_negative_targets(self, **kwargs) -> ApiResponse:
|
|
@@ -73,7 +73,7 @@ class NegativeTargets(Client):
|
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
"""
|
|
76
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
76
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
77
77
|
|
|
78
78
|
@sp_endpoint('/sd/negativeTargets/{}', method='GET')
|
|
79
79
|
def get_negative_target(self, targetId, **kwargs) -> ApiResponse:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class ProductAds(Client):
|
|
@@ -51,7 +51,7 @@ class ProductAds(Client):
|
|
|
51
51
|
ApiResponse
|
|
52
52
|
|
|
53
53
|
"""
|
|
54
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
54
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
55
55
|
|
|
56
56
|
@sp_endpoint('/sd/productAds', method='POST')
|
|
57
57
|
def create_product_ads(self, **kwargs) -> ApiResponse:
|
|
@@ -73,7 +73,7 @@ class ProductAds(Client):
|
|
|
73
73
|
ApiResponse
|
|
74
74
|
|
|
75
75
|
"""
|
|
76
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
76
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
77
77
|
|
|
78
78
|
@sp_endpoint('/sd/productAds/{}', method='GET')
|
|
79
79
|
def get_product_ad(self, adId, **kwargs) -> ApiResponse:
|
{python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/product_targeting.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Targets(Client):
|
|
@@ -115,7 +115,7 @@ class Targets(Client):
|
|
|
115
115
|
|
|
116
116
|
|
|
117
117
|
"""
|
|
118
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
118
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
119
119
|
|
|
120
120
|
@sp_endpoint('/sd/targets', method='PUT')
|
|
121
121
|
def edit_products_targets(self, **kwargs) -> ApiResponse:
|
|
@@ -133,7 +133,7 @@ class Targets(Client):
|
|
|
133
133
|
ApiResponse
|
|
134
134
|
|
|
135
135
|
"""
|
|
136
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
136
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
137
137
|
|
|
138
138
|
@sp_endpoint('/sd/targets/{}', method='GET')
|
|
139
139
|
def get_products_target(self, targetId, **kwargs) -> ApiResponse:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Reports(Client):
|
|
@@ -38,7 +38,7 @@ class Reports(Client):
|
|
|
38
38
|
ApiResponse
|
|
39
39
|
|
|
40
40
|
"""
|
|
41
|
-
return self._request(fill_query_params(kwargs.pop('path'), recordType), data=kwargs.pop('body'), params=kwargs)
|
|
41
|
+
return self._request(fill_query_params(kwargs.pop('path'), recordType), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
42
42
|
|
|
43
43
|
@sp_endpoint('/v2/reports/{}', method='GET')
|
|
44
44
|
def get_report(self, reportId, **kwargs) -> ApiResponse:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class Snapshots(Client):
|
|
@@ -13,7 +13,7 @@ class Snapshots(Client):
|
|
|
13
13
|
Returns:
|
|
14
14
|
ApiResponse
|
|
15
15
|
"""
|
|
16
|
-
return self._request(fill_query_params(kwargs.pop('path'), recordType), data=kwargs.pop('body'), params=kwargs)
|
|
16
|
+
return self._request(fill_query_params(kwargs.pop('path'), recordType), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
17
17
|
|
|
18
18
|
@sp_endpoint('/sd/snapshots/{}', method='GET')
|
|
19
19
|
def get_snapshot(self, snapshotId, **kwargs) -> ApiResponse:
|
{python_amazon_ad_api-0.6.5 → python_amazon_ad_api-0.6.7}/ad_api/api/sd/targeting_recommendations.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, ApiResponse
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class TargetsRecommendations(Client):
|
|
@@ -46,4 +46,4 @@ class TargetsRecommendations(Client):
|
|
|
46
46
|
"""
|
|
47
47
|
contentType = 'application/vnd.sdtargetingrecommendations.v3.1+json'
|
|
48
48
|
headers = {'Content-Type': contentType}
|
|
49
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs, headers=headers)
|
|
49
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
@@ -23,7 +23,7 @@ class AdGroups(Client):
|
|
|
23
23
|
ApiResponse
|
|
24
24
|
|
|
25
25
|
"""
|
|
26
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
26
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
27
27
|
|
|
28
28
|
@sp_endpoint('/v2/sp/adGroups', method='PUT')
|
|
29
29
|
@Utils.deprecated
|
|
@@ -45,7 +45,7 @@ class AdGroups(Client):
|
|
|
45
45
|
ApiResponse
|
|
46
46
|
|
|
47
47
|
"""
|
|
48
|
-
return self._request(kwargs.pop('path'), data=kwargs.pop('body'), params=kwargs)
|
|
48
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
49
49
|
|
|
50
50
|
@sp_endpoint('/v2/sp/adGroups', method='GET')
|
|
51
51
|
@Utils.deprecated
|