python-amazon-ad-api 1.2.8__tar.gz → 1.3.0__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.
Files changed (123) hide show
  1. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/PKG-INFO +3 -2
  2. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/README.md +2 -1
  3. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/__init__.py +3 -0
  4. python_amazon_ad_api-1.3.0/ad_api/api/account_budgets.py +53 -0
  5. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/recommendations.py +39 -2
  6. python_amazon_ad_api-1.3.0/ad_api/version.py +1 -0
  7. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/python_amazon_ad_api.egg-info/PKG-INFO +3 -2
  8. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/python_amazon_ad_api.egg-info/SOURCES.txt +1 -0
  9. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/setup.cfg +1 -1
  10. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/setup.py +1 -1
  11. python_amazon_ad_api-1.2.8/ad_api/version.py +0 -1
  12. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/LICENSE +0 -0
  13. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/__init__.py +0 -0
  14. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/account.py +0 -0
  15. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/advertising_test_account.py +0 -0
  16. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/attribution.py +0 -0
  17. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/audiences.py +0 -0
  18. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/billing.py +0 -0
  19. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/brand_metrics.py +0 -0
  20. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/creative_assets.py +0 -0
  21. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/eligibility.py +0 -0
  22. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/exports.py +0 -0
  23. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/history.py +0 -0
  24. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/insights.py +0 -0
  25. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/invoices.py +0 -0
  26. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/localization.py +0 -0
  27. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/manager_accounts.py +0 -0
  28. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/metadata.py +0 -0
  29. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/portfolios.py +0 -0
  30. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/portfolios_v3.py +0 -0
  31. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/profiles.py +0 -0
  32. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/reports.py +0 -0
  33. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/__init__.py +0 -0
  34. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/ad_creatives_v4.py +0 -0
  35. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/ad_groups.py +0 -0
  36. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/ad_groups_v4.py +0 -0
  37. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/ads_v4.py +0 -0
  38. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/benchmarks.py +0 -0
  39. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/bid_recommendations.py +0 -0
  40. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/brands.py +0 -0
  41. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/budget_rules.py +0 -0
  42. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/campaigns.py +0 -0
  43. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/campaigns_v4.py +0 -0
  44. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/forecast.py +0 -0
  45. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/keywords.py +0 -0
  46. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/keywords_recommendations.py +0 -0
  47. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/landing_page_asins.py +0 -0
  48. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/media.py +0 -0
  49. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/migration.py +0 -0
  50. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/negative_keywords.py +0 -0
  51. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/negative_product_targeting.py +0 -0
  52. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/optimization_rules.py +0 -0
  53. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/product_targeting.py +0 -0
  54. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/recommendations.py +0 -0
  55. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/reports.py +0 -0
  56. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/stores.py +0 -0
  57. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/targeting_categories.py +0 -0
  58. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/targeting_recommendations.py +0 -0
  59. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sb/themes.py +0 -0
  60. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/__init__.py +0 -0
  61. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/ad_groups.py +0 -0
  62. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/bid_recommendations.py +0 -0
  63. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/brand_safety.py +0 -0
  64. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/budget_rules.py +0 -0
  65. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/campaigns.py +0 -0
  66. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/campaigns_budget_usage.py +0 -0
  67. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/creatives.py +0 -0
  68. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/forecast.py +0 -0
  69. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/negative_product_targeting.py +0 -0
  70. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/product_ads.py +0 -0
  71. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/product_targeting.py +0 -0
  72. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/recommendations.py +0 -0
  73. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/reports.py +0 -0
  74. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/snapshots.py +0 -0
  75. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sd/targeting_recommendations.py +0 -0
  76. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/__init__.py +0 -0
  77. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/ad_groups_v3.py +0 -0
  78. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/bid_recommendations_v3.py +0 -0
  79. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/budget_initial_recommendation.py +0 -0
  80. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/budget_recommendations.py +0 -0
  81. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/budget_rules.py +0 -0
  82. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/budget_rules_recommendations.py +0 -0
  83. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/campaign_consolidated_recommendations.py +0 -0
  84. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/campaign_negative_keywords_v3.py +0 -0
  85. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/campaign_negative_targets.py +0 -0
  86. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/campaigns_budget_usage.py +0 -0
  87. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/campaigns_v3.py +0 -0
  88. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/campaings_optimization.py +0 -0
  89. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/keywords_v3.py +0 -0
  90. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/negative_keywords_v3.py +0 -0
  91. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/negative_product_targeting_v3.py +0 -0
  92. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/product_ads_v3.py +0 -0
  93. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/product_recommendations.py +0 -0
  94. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/product_targeting_v3.py +0 -0
  95. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/ranked_keywords_recommendations.py +0 -0
  96. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/sp/schedule_based_bid_optimization.py +0 -0
  97. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/stores.py +0 -0
  98. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/stream.py +0 -0
  99. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/v1/__init__.py +0 -0
  100. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/v1/ad_groups.py +0 -0
  101. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/v1/ads.py +0 -0
  102. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/v1/campaigns.py +0 -0
  103. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/v1/targets.py +0 -0
  104. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/api/validation_configurations.py +0 -0
  105. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/auth/__init__.py +0 -0
  106. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/auth/access_token_client.py +0 -0
  107. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/auth/access_token_response.py +0 -0
  108. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/auth/credentials.py +0 -0
  109. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/auth/exceptions.py +0 -0
  110. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/__init__.py +0 -0
  111. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/api_response.py +0 -0
  112. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/base_client.py +0 -0
  113. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/client.py +0 -0
  114. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/config.py +0 -0
  115. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/credential_provider.py +0 -0
  116. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/exceptions.py +0 -0
  117. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/helpers.py +0 -0
  118. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/marketplaces.py +0 -0
  119. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/ad_api/base/utils.py +0 -0
  120. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/pyproject.toml +0 -0
  121. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/python_amazon_ad_api.egg-info/dependency_links.txt +0 -0
  122. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/python_amazon_ad_api.egg-info/requires.txt +0 -0
  123. {python_amazon_ad_api-1.2.8 → python_amazon_ad_api-1.3.0}/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: 1.2.8
3
+ Version: 1.3.0
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
@@ -266,6 +266,7 @@ curl \
266
266
  * [PortfoliosV3](https://python-amazon-ad-api.readthedocs.io/en/latest/api/portfoliosV3.html)
267
267
  * [Invoices](https://python-amazon-ad-api.readthedocs.io/en/latest/api/invoices.html)
268
268
  * [Billing](https://python-amazon-ad-api.readthedocs.io/en/latest/api/billing.html)
269
+ * [Account Budgets](https://python-amazon-ad-api.readthedocs.io/en/latest/api/account_budgets.html)
269
270
  * [Audiences](https://python-amazon-ad-api.readthedocs.io/en/latest/api/audiences.html)
270
271
  * [Change History](https://python-amazon-ad-api.readthedocs.io/en/latest/api/history.html)
271
272
  * [Creative Assets](https://python-amazon-ad-api.readthedocs.io/en/latest/api/creative_assets.html)
@@ -274,7 +275,7 @@ curl \
274
275
  * [Localization](https://python-amazon-ad-api.readthedocs.io/en/latest/api/localization.html)
275
276
  * [Product Selector](https://python-amazon-ad-api.readthedocs.io/en/latest/api/metadata.html)
276
277
  * [Validation Configurations](https://python-amazon-ad-api.readthedocs.io/en/latest/api/validation_configurations.html)
277
- * [Tactical recommendations beta](https://python-amazon-ad-api.readthedocs.io/en/latest/api/recommendations.html)
278
+ * [Tactical recommendations](https://python-amazon-ad-api.readthedocs.io/en/latest/api/recommendations.html)
278
279
  * [Exports](https://advertising.amazon.com/API/docs/en-us/exports)
279
280
 
280
281
 
@@ -238,6 +238,7 @@ curl \
238
238
  * [PortfoliosV3](https://python-amazon-ad-api.readthedocs.io/en/latest/api/portfoliosV3.html)
239
239
  * [Invoices](https://python-amazon-ad-api.readthedocs.io/en/latest/api/invoices.html)
240
240
  * [Billing](https://python-amazon-ad-api.readthedocs.io/en/latest/api/billing.html)
241
+ * [Account Budgets](https://python-amazon-ad-api.readthedocs.io/en/latest/api/account_budgets.html)
241
242
  * [Audiences](https://python-amazon-ad-api.readthedocs.io/en/latest/api/audiences.html)
242
243
  * [Change History](https://python-amazon-ad-api.readthedocs.io/en/latest/api/history.html)
243
244
  * [Creative Assets](https://python-amazon-ad-api.readthedocs.io/en/latest/api/creative_assets.html)
@@ -246,7 +247,7 @@ curl \
246
247
  * [Localization](https://python-amazon-ad-api.readthedocs.io/en/latest/api/localization.html)
247
248
  * [Product Selector](https://python-amazon-ad-api.readthedocs.io/en/latest/api/metadata.html)
248
249
  * [Validation Configurations](https://python-amazon-ad-api.readthedocs.io/en/latest/api/validation_configurations.html)
249
- * [Tactical recommendations beta](https://python-amazon-ad-api.readthedocs.io/en/latest/api/recommendations.html)
250
+ * [Tactical recommendations](https://python-amazon-ad-api.readthedocs.io/en/latest/api/recommendations.html)
250
251
  * [Exports](https://advertising.amazon.com/API/docs/en-us/exports)
251
252
 
252
253
 
@@ -3,6 +3,7 @@ from .profiles import Profiles
3
3
  from .manager_accounts import ManagerAccounts
4
4
  from .invoices import Invoices
5
5
  from .billing import Billing
6
+ from .account_budgets import AccountBudgets
6
7
  from .eligibility import Eligibility
7
8
  from .metadata import Metadata
8
9
  from .history import History
@@ -38,6 +39,7 @@ __all__ = [
38
39
  "ManagerAccounts",
39
40
  "Invoices",
40
41
  "Billing",
42
+ "AccountBudgets",
41
43
  "Eligibility",
42
44
  "Metadata",
43
45
  "History",
@@ -45,6 +47,7 @@ __all__ = [
45
47
  "Localization",
46
48
  "Audiences",
47
49
  "Portfolios",
50
+ "PortfoliosV3",
48
51
  "Insights",
49
52
  "Attribution",
50
53
  "BrandMetrics",
@@ -0,0 +1,53 @@
1
+ from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
2
+
3
+
4
+ class AccountBudgets(Client):
5
+ """ """
6
+
7
+ @sp_endpoint('/accountBudgets/featureFlags', method='GET')
8
+ def get_feature_flags(self, **kwargs) -> ApiResponse:
9
+ r"""
10
+ Reports whether the account has opted out of automatic budget increases.
11
+
12
+ Returns
13
+ ApiResponse with a ``featureFlags`` object holding one member,
14
+ ``isOptedOutForAverageDailyBudgetIncrease``. At ``true`` the account
15
+ has opted out, and the service will not raise a campaign's daily
16
+ budget on its own; at ``false`` it may.
17
+
18
+ """
19
+ headers = {'Accept': 'application/vnd.accountBudgetFeatureFlags.v1+json'}
20
+ return self._request(kwargs.pop('path'), params=kwargs, headers=headers)
21
+
22
+ @sp_endpoint('/accountBudgets/featureFlags', method='POST')
23
+ def update_feature_flags(self, **kwargs) -> ApiResponse:
24
+ r"""
25
+ Changes whether the account opts out of automatic budget increases.
26
+
27
+ Request Body (required)
28
+
29
+ - ``featureFlags`` (object): required. A ``FeatureFlags`` object holding
30
+ ``isOptedOutForAverageDailyBudgetIncrease``. Set it to ``true`` to stop
31
+ the service raising daily budgets on its own, ``false`` to allow it.
32
+
33
+ .. warning::
34
+
35
+ This changes how the account is charged. With the flag at ``false``
36
+ the service may raise a campaign's daily budget without another call
37
+ from you, and spend follows the budget. Not exercised here: the
38
+ setting belongs to the account holder.
39
+
40
+ Returns
41
+ ApiResponse with ``code`` and ``details``, not with the flags read
42
+ back. ``code`` is ``OK``, ``ENTRY_NOT_FOUND`` or
43
+ ``INVALID_PARAMETER_VALUE``, so a ``200`` carrying something other
44
+ than ``OK`` means the change did not land. Read the flags again with
45
+ ``get_feature_flags`` to confirm.
46
+
47
+ """
48
+ headers = {
49
+ 'Accept': 'application/vnd.accountBudgetFeatureFlags.v1+json',
50
+ 'Content-Type': 'application/vnd.accountBudgetFeatureFlags.v1+json',
51
+ }
52
+ body = Utils.convert_body(kwargs.pop('body'), False)
53
+ return self._request(kwargs.pop('path'), data=body, params=kwargs, headers=headers)
@@ -13,7 +13,7 @@ class Recommendations(Client):
13
13
  | ListRecommendationsRequest {
14
14
  | **maxResults** (integer) default: 500 minimum: 1 maximum: 500
15
15
  | **nextToken** (string) Token to retrieve the next page of results.
16
- | **filters**\* (array) minItems: 1 maxItems: 10 [
16
+ | **filters** (array) minItems: 1 maxItems: 10 [
17
17
  | ListRecommendationsFilter {
18
18
  | **include** (boolean): Flag to specify if the filter should be included or excluded. default: true
19
19
  | **field**\* FilterField (string): Field to filter by. Enum: ['RECOMMENDATION_ID', 'AD_PRODUCT', 'RECOMMENDATION_TYPE', 'STATUS', 'GROUPING_TYPE', 'CAMPAIGN_ID']
@@ -24,8 +24,27 @@ class Recommendations(Client):
24
24
  | }
25
25
  | ]
26
26
  | }
27
+
28
+ The values ``STATUS`` accepts are not the states of a campaign. They are
29
+ the stages a recommendation passes through, and the service names them in
30
+ its rejection message: ``PUBLISHED``, ``APPLY_IN_PROGRESS``,
31
+ ``APPLY_SUCCESS``, ``APPLY_FAILED`` and ``REJECTED``. ``ENABLED`` and
32
+ ``ACTIVE`` are refused.
33
+
34
+ ``filters`` behaves oddly. An empty list answers
35
+ ``400 Member must have length greater than or equal to 1``, yet leaving
36
+ the member out altogether answers ``200`` with the account's
37
+ recommendations. So it is required when present, and optional in
38
+ practice.
39
+
40
+ A body is required: without one the call fails before reaching the
41
+ service, with ``KeyError: 'body'``.
42
+
27
43
  Returns
28
- ApiResponse
44
+ ApiResponse with ``recommendations``, ``totalResults`` and
45
+ ``nextToken``. The list is empty for an account that has none, which
46
+ is a fact about the account rather than a failed call.
47
+
29
48
  """
30
49
  schema_version = 'application/vnd.listRecommendationsRequest.v' + str(version) + '+json'
31
50
  headers = {"Accept": schema_version, "Content-Type": schema_version}
@@ -42,6 +61,15 @@ class Recommendations(Client):
42
61
  | (string) Recommendation identifier.
43
62
  | ]
44
63
  | }
64
+
65
+ .. warning::
66
+
67
+ This changes campaigns. Applying a recommendation edits real bidding
68
+ and budgets on the account, and there is no undo richer than
69
+ changing them back by hand.
70
+
71
+ Not exercised: no recommendation existed on the account to apply.
72
+
45
73
  Returns
46
74
  ApiResponse
47
75
  """
@@ -79,6 +107,15 @@ class Recommendations(Client):
79
107
  | }
80
108
  | }
81
109
  | }
110
+
111
+ .. warning::
112
+
113
+ This edits a recommendation before it is applied. Read one first with
114
+ ``list_recommendations`` for the shape it expects, since the fields
115
+ change with ``recommendationType``.
116
+
117
+ Not exercised, for the same reason as ``apply_recommendations``.
118
+
82
119
  Returns
83
120
  ApiResponse
84
121
 
@@ -0,0 +1 @@
1
+ __version__ = "1.3.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-amazon-ad-api
3
- Version: 1.2.8
3
+ Version: 1.3.0
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
@@ -266,6 +266,7 @@ curl \
266
266
  * [PortfoliosV3](https://python-amazon-ad-api.readthedocs.io/en/latest/api/portfoliosV3.html)
267
267
  * [Invoices](https://python-amazon-ad-api.readthedocs.io/en/latest/api/invoices.html)
268
268
  * [Billing](https://python-amazon-ad-api.readthedocs.io/en/latest/api/billing.html)
269
+ * [Account Budgets](https://python-amazon-ad-api.readthedocs.io/en/latest/api/account_budgets.html)
269
270
  * [Audiences](https://python-amazon-ad-api.readthedocs.io/en/latest/api/audiences.html)
270
271
  * [Change History](https://python-amazon-ad-api.readthedocs.io/en/latest/api/history.html)
271
272
  * [Creative Assets](https://python-amazon-ad-api.readthedocs.io/en/latest/api/creative_assets.html)
@@ -274,7 +275,7 @@ curl \
274
275
  * [Localization](https://python-amazon-ad-api.readthedocs.io/en/latest/api/localization.html)
275
276
  * [Product Selector](https://python-amazon-ad-api.readthedocs.io/en/latest/api/metadata.html)
276
277
  * [Validation Configurations](https://python-amazon-ad-api.readthedocs.io/en/latest/api/validation_configurations.html)
277
- * [Tactical recommendations beta](https://python-amazon-ad-api.readthedocs.io/en/latest/api/recommendations.html)
278
+ * [Tactical recommendations](https://python-amazon-ad-api.readthedocs.io/en/latest/api/recommendations.html)
278
279
  * [Exports](https://advertising.amazon.com/API/docs/en-us/exports)
279
280
 
280
281
 
@@ -7,6 +7,7 @@ ad_api/__init__.py
7
7
  ad_api/version.py
8
8
  ad_api/api/__init__.py
9
9
  ad_api/api/account.py
10
+ ad_api/api/account_budgets.py
10
11
  ad_api/api/advertising_test_account.py
11
12
  ad_api/api/attribution.py
12
13
  ad_api/api/audiences.py
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = python-amazon-ad-api
3
- version = 1.2.8
3
+ version = 1.3.0
4
4
  author = Daniel Alvaro
5
5
  author_email = denisneuf@hotmail.com
6
6
  description = Python wrapper for the Amazon Advertising API
@@ -2,7 +2,7 @@ from setuptools import setup
2
2
 
3
3
  setup(
4
4
  name='python-amazon-ad-api',
5
- version='1.2.8',
5
+ version='1.3.0',
6
6
  install_requires=[
7
7
  "requests>=2.27.1,<2.35.0",
8
8
  "six>=1.16,<1.18",
@@ -1 +0,0 @@
1
- __version__ = "1.2.8"