python-amazon-ad-api 1.5.2__py3-none-any.whl → 1.5.4__py3-none-any.whl
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.
- ad_api/api/v1/__init__.py +4 -0
- ad_api/api/v1/recommendations.py +87 -0
- ad_api/api/v1/selling_accounts.py +47 -0
- ad_api/version.py +1 -1
- {python_amazon_ad_api-1.5.2.dist-info → python_amazon_ad_api-1.5.4.dist-info}/METADATA +3 -1
- {python_amazon_ad_api-1.5.2.dist-info → python_amazon_ad_api-1.5.4.dist-info}/RECORD +9 -7
- {python_amazon_ad_api-1.5.2.dist-info → python_amazon_ad_api-1.5.4.dist-info}/WHEEL +0 -0
- {python_amazon_ad_api-1.5.2.dist-info → python_amazon_ad_api-1.5.4.dist-info}/licenses/LICENSE +0 -0
- {python_amazon_ad_api-1.5.2.dist-info → python_amazon_ad_api-1.5.4.dist-info}/top_level.txt +0 -0
ad_api/api/v1/__init__.py
CHANGED
|
@@ -12,6 +12,8 @@ from .brand_store_pages import BrandStorePages
|
|
|
12
12
|
from .reports import Reports
|
|
13
13
|
from .labels import Labels
|
|
14
14
|
from .manager_accounts import ManagerAccounts
|
|
15
|
+
from .recommendations import Recommendations
|
|
16
|
+
from .selling_accounts import SellingAccounts
|
|
15
17
|
|
|
16
18
|
__all__ = [
|
|
17
19
|
"Campaigns",
|
|
@@ -28,4 +30,6 @@ __all__ = [
|
|
|
28
30
|
"Reports",
|
|
29
31
|
"Labels",
|
|
30
32
|
"ManagerAccounts",
|
|
33
|
+
"Recommendations",
|
|
34
|
+
"SellingAccounts",
|
|
31
35
|
]
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Recommendations(Client):
|
|
5
|
+
r"""
|
|
6
|
+
Recommendations(account='default', marketplace: Marketplaces = Marketplaces.EU, credentials=None, debug=False)
|
|
7
|
+
|
|
8
|
+
Amazon Ads API v1 - recommendations
|
|
9
|
+
|
|
10
|
+
Three routes, two of them generic and one per product:
|
|
11
|
+
|
|
12
|
+
POST /adsApi/v1/query/recommendations QueryRecommendation
|
|
13
|
+
GET /adsApi/v1/recommendations ListRecommendation
|
|
14
|
+
POST /adsApi/v1/create/recommendations/sb SBCreateRecommendation
|
|
15
|
+
|
|
16
|
+
Only the create carries a product suffix in its path. The query and the
|
|
17
|
+
list are generic and take the product in ``adProductFilter``, so a
|
|
18
|
+
Sponsored Products or Sponsored Display create would sit beside the SB one
|
|
19
|
+
under its own suffix without touching these two.
|
|
20
|
+
|
|
21
|
+
The query requires ``accessRequestedAccounts``, the same account selector
|
|
22
|
+
the v1 reports family uses, so the account travels in the body and not only
|
|
23
|
+
in the headers.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
@sp_endpoint('/adsApi/v1/query/recommendations', method='POST')
|
|
27
|
+
def query_recommendations(self, **kwargs) -> ApiResponse:
|
|
28
|
+
r"""
|
|
29
|
+
query_recommendations(body: dict) -> ApiResponse
|
|
30
|
+
|
|
31
|
+
Amazon Ads API v1 - Query Recommendations (operationId: QueryRecommendation)
|
|
32
|
+
|
|
33
|
+
Request Body [Required]
|
|
34
|
+
| **accessRequestedAccounts** (list<QueryRecommendationRequestAccessRequestedAccountItem>) : [required] 1..2000
|
|
35
|
+
| **adProductFilter** (dict) [optional]
|
|
36
|
+
| **recommendationTypeFilter** (dict) [optional]
|
|
37
|
+
| **recommendationTypeDetailsFilter** (dict) [optional]
|
|
38
|
+
| **marketplacesFilter** (dict) [optional]
|
|
39
|
+
| **languageFilter** (dict) [optional]
|
|
40
|
+
| **maxResults** (int) : 1..100, default 100
|
|
41
|
+
| **nextToken** (string)
|
|
42
|
+
|
|
43
|
+
Returns
|
|
44
|
+
| **recommendations** (list<Recommendation>) : 0..300
|
|
45
|
+
| **totalResults** (int)
|
|
46
|
+
| **nextToken** (string)
|
|
47
|
+
"""
|
|
48
|
+
schema_version = 'application/json'
|
|
49
|
+
headers = {"Accept": schema_version, "Content-Type": schema_version}
|
|
50
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
51
|
+
|
|
52
|
+
@sp_endpoint('/adsApi/v1/recommendations', method='GET')
|
|
53
|
+
def list_recommendations(self, **kwargs) -> ApiResponse:
|
|
54
|
+
r"""
|
|
55
|
+
list_recommendations(**params) -> ApiResponse
|
|
56
|
+
|
|
57
|
+
Amazon Ads API v1 - List Recommendations (operationId: ListRecommendation)
|
|
58
|
+
|
|
59
|
+
A GET with query parameters, not a body.
|
|
60
|
+
|
|
61
|
+
Returns
|
|
62
|
+
| **recommendations** (list<Recommendation>) : 0..300
|
|
63
|
+
| **totalResults** (int)
|
|
64
|
+
| **nextToken** (string)
|
|
65
|
+
"""
|
|
66
|
+
path = kwargs.pop('path')
|
|
67
|
+
return self._request(path, params=kwargs)
|
|
68
|
+
|
|
69
|
+
@sp_endpoint('/adsApi/v1/create/recommendations/sb', method='POST')
|
|
70
|
+
def create_recommendations_sb(self, **kwargs) -> ApiResponse:
|
|
71
|
+
r"""
|
|
72
|
+
create_recommendations_sb(body: dict) -> ApiResponse
|
|
73
|
+
|
|
74
|
+
Amazon Ads API v1 - Create Sponsored Brands Recommendation (operationId: SBCreateRecommendation)
|
|
75
|
+
|
|
76
|
+
Request Body
|
|
77
|
+
| **recommendations** (list<SBRecommendationCreate>) : 1..1
|
|
78
|
+
|
|
79
|
+
Answer
|
|
80
|
+
207 MultiStatus with success[] and error[] indexed.
|
|
81
|
+
|
|
82
|
+
This route creates a recommendation in the account, so it is not a
|
|
83
|
+
read. It is the only route in the family with a product suffix.
|
|
84
|
+
"""
|
|
85
|
+
schema_version = 'application/json'
|
|
86
|
+
headers = {"Accept": schema_version, "Content-Type": schema_version}
|
|
87
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class SellingAccounts(Client):
|
|
5
|
+
r"""
|
|
6
|
+
SellingAccounts(account='default', marketplace: Marketplaces = Marketplaces.EU, credentials=None, debug=False)
|
|
7
|
+
|
|
8
|
+
Amazon Ads API v1 - selling accounts
|
|
9
|
+
|
|
10
|
+
One route, read only:
|
|
11
|
+
|
|
12
|
+
POST /adsApi/v1/query/sellingAccounts
|
|
13
|
+
|
|
14
|
+
No adProductFilter here: a selling account is the account behind the ads,
|
|
15
|
+
not an ad product. Every member of the request is optional, so an empty
|
|
16
|
+
body is a valid request.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
@sp_endpoint('/adsApi/v1/query/sellingAccounts', method='POST')
|
|
20
|
+
def query_selling_accounts(self, **kwargs) -> ApiResponse:
|
|
21
|
+
r"""
|
|
22
|
+
query_selling_accounts(body: dict) -> ApiResponse
|
|
23
|
+
|
|
24
|
+
Amazon Ads API v1 - Query Selling Accounts (operationId: QuerySellingAccount)
|
|
25
|
+
|
|
26
|
+
Request Body [All optional]
|
|
27
|
+
| **sellingAccountLinkTokenFilter** (dict)
|
|
28
|
+
| **sellingProgramFilter** (dict)
|
|
29
|
+
| **maxResults** (int) : 10..100, default 100
|
|
30
|
+
| **nextToken** (string)
|
|
31
|
+
|
|
32
|
+
Returns
|
|
33
|
+
| **sellingAccounts** (list<SellingAccount>) : 0..100
|
|
34
|
+
| **sellingAccountLinkToken** (string) : [required] the token that locates the account
|
|
35
|
+
| **portals** (list<Portal>) : [required] 1..6
|
|
36
|
+
| **sellingProgram** (SellingProgram) : [required]
|
|
37
|
+
| **displayName** (string)
|
|
38
|
+
| **countryCodes** (list<CountryCode>) : 0..30
|
|
39
|
+
| **business** (SellingAccountBusiness)
|
|
40
|
+
| **nextToken** (string)
|
|
41
|
+
|
|
42
|
+
maxResults starts at 10, so a smaller value is a rejected body rather
|
|
43
|
+
than a shorter page.
|
|
44
|
+
"""
|
|
45
|
+
schema_version = 'application/json'
|
|
46
|
+
headers = {"Accept": schema_version, "Content-Type": schema_version}
|
|
47
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
ad_api/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.5.
|
|
1
|
+
__version__ = "1.5.4"
|
|
@@ -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.4
|
|
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
|
|
@@ -314,6 +314,8 @@ The v1 API lives under `/adsApi/v1/` and is **not** split by product: every call
|
|
|
314
314
|
* [Reports](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/reports.html#ad_api.api.v1.Reports.Reports.create_report)
|
|
315
315
|
* [Labels](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/labels.html#ad_api.api.v1.Labels.Labels.query_labels)
|
|
316
316
|
* [Manager Accounts](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/manager_accounts.html#ad_api.api.v1.ManagerAccounts.ManagerAccounts.query_manager_accounts)
|
|
317
|
+
* [Recommendations](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/recommendations.html#ad_api.api.v1.Recommendations.Recommendations.query_recommendations)
|
|
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)
|
|
317
319
|
|
|
318
320
|
|
|
319
321
|
### [Modules Available Sponsored Products](https://python-amazon-ad-api.readthedocs.io/en/latest/sp.html)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
ad_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
ad_api/version.py,sha256=
|
|
2
|
+
ad_api/version.py,sha256=6rozAm2Gs2qiJ0sE_ZKG2IERSD5Rh3ynVVW9TQr9YUU,22
|
|
3
3
|
ad_api/api/__init__.py,sha256=M07SD5BRC1L4_PqxLc8cKPI9Iq5zC2jPhkFUeHoh6CM,1632
|
|
4
4
|
ad_api/api/account.py,sha256=CmOvCfHoPWaeTUJvtB0pNoNulZVSz4oMMCKIpVTpHos,2931
|
|
5
5
|
ad_api/api/account_budgets.py,sha256=jFce5eLWAFK3ydjnYR7_Sv7B0-gHTG5bMTx_TcHyy1A,2319
|
|
@@ -89,7 +89,7 @@ ad_api/api/sp/product_recommendations.py,sha256=vXoZIRqcFc5bo9MUprArKndxcEYe_Puy
|
|
|
89
89
|
ad_api/api/sp/product_targeting_v3.py,sha256=vk_T0piHzP5uwt8HSHm5hFKP_0sXJD8nbyooPtM-BTs,9567
|
|
90
90
|
ad_api/api/sp/ranked_keywords_recommendations.py,sha256=QYFje19TFmwhedh7sn5VJIypL8gp6d6tpBQCpf_SIXw,13094
|
|
91
91
|
ad_api/api/sp/schedule_based_bid_optimization.py,sha256=G8VkS7iP1lTIAxZgbfRCLz8njw1DkVH9HQPOZ63pWNU,2371
|
|
92
|
-
ad_api/api/v1/__init__.py,sha256=
|
|
92
|
+
ad_api/api/v1/__init__.py,sha256=_fNoTMJHXxgcuoLy7vJZsj7f4YgU7mBpZW-u5SdbXYs,1013
|
|
93
93
|
ad_api/api/v1/ad_associations.py,sha256=g5L8hAIagmsb-yQ09hP7z1zbVVe868NlpOOokv-Mouc,5812
|
|
94
94
|
ad_api/api/v1/ad_extensions.py,sha256=kL-7xHaXXqb2jXTwZrY0oGttLAG0CW_IjBAqL_CI92U,5519
|
|
95
95
|
ad_api/api/v1/ad_groups.py,sha256=pQhCVdve_O6kbL4mBA5bxxhKcKNl_BKqa7z9DvrxwaM,12626
|
|
@@ -102,7 +102,9 @@ ad_api/api/v1/brand_stores.py,sha256=zlBsKiOwmdSiIG9filgdqUlPnV6AX-gE6S5nNyAQACc
|
|
|
102
102
|
ad_api/api/v1/campaigns.py,sha256=u5PlvoAhgVhMxbCvYkPgqtbYK3TXXcb7TMie0Qjrgwc,9573
|
|
103
103
|
ad_api/api/v1/labels.py,sha256=jjPmafIQZTh99Ztj5MCcDC7UyoFFN0YuWdn2syqd3Yg,2438
|
|
104
104
|
ad_api/api/v1/manager_accounts.py,sha256=cNAs1Qq6SYG0y4_4UpNBDfItqBJ1NvYACsIvFc8h-rw,4980
|
|
105
|
+
ad_api/api/v1/recommendations.py,sha256=RJfmwUQ4YOcTdXiHz_U2ArJ01B29vKleRS_avJFjS14,3737
|
|
105
106
|
ad_api/api/v1/reports.py,sha256=vJmWhIsALkX27HeijTsSUz3zrYhUBm4RodTCieJD8Y8,6657
|
|
107
|
+
ad_api/api/v1/selling_accounts.py,sha256=0_R4yzvXGp_gFyfcZeWJyeIr7Wh4eGpLfK12podXqGA,1941
|
|
106
108
|
ad_api/api/v1/targets.py,sha256=a4BzPjg9m1JJwqphhpQOFkNIcgCw7v4-K0sNzOihMZI,12355
|
|
107
109
|
ad_api/auth/__init__.py,sha256=B_yKdmsHENQaKfMFAIcSxQqG4aBUmNBm5orKIMUYObk,229
|
|
108
110
|
ad_api/auth/access_token_client.py,sha256=_V0FGXRmqRNMb1fz1AGqnR6gYr_WqFkMTbK1os0yoIk,2983
|
|
@@ -119,8 +121,8 @@ ad_api/base/exceptions.py,sha256=9D3M40ZIlLS0fA-aQh1BTWPOW-Nvf0tRhbA85jFnDJ4,438
|
|
|
119
121
|
ad_api/base/helpers.py,sha256=UK7Q13vZ0mNdF54xzfzoGDn2O_cd2yPrK2X4rOzC41c,2334
|
|
120
122
|
ad_api/base/marketplaces.py,sha256=44lvCcluXNpqTprWQ80e3weSQmQbJoWL-WDSOWVbCyQ,4657
|
|
121
123
|
ad_api/base/utils.py,sha256=_qnCBOvyJTLgaZjJzUWTi38GGLHkQszXELs79133Rb4,5618
|
|
122
|
-
python_amazon_ad_api-1.5.
|
|
123
|
-
python_amazon_ad_api-1.5.
|
|
124
|
-
python_amazon_ad_api-1.5.
|
|
125
|
-
python_amazon_ad_api-1.5.
|
|
126
|
-
python_amazon_ad_api-1.5.
|
|
124
|
+
python_amazon_ad_api-1.5.4.dist-info/licenses/LICENSE,sha256=h2rpqlmmLy-4l1tN6KpWAFxx1JEMYeEFrMrZUbx_B_o,1105
|
|
125
|
+
python_amazon_ad_api-1.5.4.dist-info/METADATA,sha256=rVLOOLuxFYPyj4ysENaOtgzKhYkVjGs80nZchxxSNfY,23588
|
|
126
|
+
python_amazon_ad_api-1.5.4.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
127
|
+
python_amazon_ad_api-1.5.4.dist-info/top_level.txt,sha256=nN9twUos-8pkP514ZwpvRU9YL9L2XyQyHsMQFfudGTU,7
|
|
128
|
+
python_amazon_ad_api-1.5.4.dist-info/RECORD,,
|
|
File without changes
|
{python_amazon_ad_api-1.5.2.dist-info → python_amazon_ad_api-1.5.4.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|