python-amazon-ad-api 1.1.4__py3-none-any.whl → 1.1.5__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/sb/__init__.py +2 -0
- ad_api/api/sb/targeting_categories.py +98 -0
- ad_api/version.py +1 -1
- {python_amazon_ad_api-1.1.4.dist-info → python_amazon_ad_api-1.1.5.dist-info}/METADATA +1 -1
- {python_amazon_ad_api-1.1.4.dist-info → python_amazon_ad_api-1.1.5.dist-info}/RECORD +8 -7
- {python_amazon_ad_api-1.1.4.dist-info → python_amazon_ad_api-1.1.5.dist-info}/WHEEL +0 -0
- {python_amazon_ad_api-1.1.4.dist-info → python_amazon_ad_api-1.1.5.dist-info}/licenses/LICENSE +0 -0
- {python_amazon_ad_api-1.1.4.dist-info → python_amazon_ad_api-1.1.5.dist-info}/top_level.txt +0 -0
ad_api/api/sb/__init__.py
CHANGED
|
@@ -22,6 +22,7 @@ from .benchmarks import Benchmarks
|
|
|
22
22
|
from .themes import Themes
|
|
23
23
|
from .budget_rules import BudgetRules
|
|
24
24
|
from .optimization_rules import OptimizationRules
|
|
25
|
+
from .targeting_categories import TargetingCategories
|
|
25
26
|
|
|
26
27
|
__all__ = [
|
|
27
28
|
"Brands",
|
|
@@ -48,4 +49,5 @@ __all__ = [
|
|
|
48
49
|
"Themes",
|
|
49
50
|
"BudgetRules",
|
|
50
51
|
"OptimizationRules",
|
|
52
|
+
"TargetingCategories",
|
|
51
53
|
]
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class TargetingCategories(Client):
|
|
5
|
+
"""Sponsored Brands targetable categories.
|
|
6
|
+
|
|
7
|
+
Documentation: https://advertising.amazon.com/API/docs/en-us/sponsored-brands/4-0/openapi
|
|
8
|
+
|
|
9
|
+
All three routes are reads, and all three were probed against a live account.
|
|
10
|
+
|
|
11
|
+
.. note::
|
|
12
|
+
``list_categories`` returns the tree under ``categoryTree``, which the
|
|
13
|
+
contract does not name. Each node carries ``categoryRefinementId``,
|
|
14
|
+
``name``, ``parentCategoryRefinementId``, ``isTargetable`` and, where the
|
|
15
|
+
service knows it, ``asinCountRange`` with a ``min`` and ``max``.
|
|
16
|
+
|
|
17
|
+
.. note::
|
|
18
|
+
Large root categories come back with ``isTargetable`` set to ``false``:
|
|
19
|
+
they have to be narrowed down to their children before they can be used
|
|
20
|
+
as a target.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
_MEDIA = 'application/vnd.sbtargeting.v4+json'
|
|
24
|
+
|
|
25
|
+
@sp_endpoint('/sb/targets/categories', method='GET')
|
|
26
|
+
def list_categories(self, supplySource, **kwargs) -> ApiResponse:
|
|
27
|
+
"""
|
|
28
|
+
Gets the targetable category tree.
|
|
29
|
+
|
|
30
|
+
Keyword Args
|
|
31
|
+
| query **supplySource** (string): [required] ``AMAZON`` or
|
|
32
|
+
``STREAMING_VIDEO``.
|
|
33
|
+
| query **locale** (string): [optional] Market locale, for instance
|
|
34
|
+
``es_ES``, ``en_US`` or ``de_DE``.
|
|
35
|
+
| query **includeOnlyRootCategories** (boolean): [optional] Return
|
|
36
|
+
root categories only.
|
|
37
|
+
| query **parentCategoryRefinementId** (string): [optional] Return
|
|
38
|
+
the children of that category.
|
|
39
|
+
| query **nextToken** (string): [optional] Pagination token.
|
|
40
|
+
|
|
41
|
+
Returns:
|
|
42
|
+
| ApiResponse, ``200``, with the tree under ``categoryTree``.
|
|
43
|
+
|
|
44
|
+
Example node::
|
|
45
|
+
|
|
46
|
+
{"categoryRefinementId": "1909624031", "name": "Chupetes",
|
|
47
|
+
"asinCountRange": {"min": 1247, "max": 2078},
|
|
48
|
+
"isTargetable": true, "parentCategoryRefinementId": "1862267031"}
|
|
49
|
+
"""
|
|
50
|
+
return self._request(kwargs.pop('path'), params=kwargs,
|
|
51
|
+
headers={'Accept': self._MEDIA, 'Content-Type': self._MEDIA})
|
|
52
|
+
|
|
53
|
+
@sp_endpoint('/sb/targets/categories/{}/refinements', method='GET')
|
|
54
|
+
def list_refinements(self, categoryRefinementId, **kwargs) -> ApiResponse:
|
|
55
|
+
"""
|
|
56
|
+
Gets the refinements of a category.
|
|
57
|
+
|
|
58
|
+
Keyword Args
|
|
59
|
+
| path **categoryRefinementId** (string): [required]
|
|
60
|
+
| query **locale** (string): [optional]
|
|
61
|
+
| query **nextToken** (string): [optional]
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
| ApiResponse, ``200``.
|
|
65
|
+
"""
|
|
66
|
+
return self._request(fill_query_params(kwargs.pop('path'), categoryRefinementId),
|
|
67
|
+
params=kwargs,
|
|
68
|
+
headers={'Accept': self._MEDIA, 'Content-Type': self._MEDIA})
|
|
69
|
+
|
|
70
|
+
@sp_endpoint('/sb/targets/products/count', method='POST')
|
|
71
|
+
def get_product_count(self, category, **kwargs) -> ApiResponse:
|
|
72
|
+
"""
|
|
73
|
+
Gets the number of products in a category.
|
|
74
|
+
|
|
75
|
+
Request Body [Required]
|
|
76
|
+
| **category** (string): [required] Category refinement identifier.
|
|
77
|
+
| **ageRanges** (array of string): [optional]
|
|
78
|
+
| **brands** (array of string): [optional]
|
|
79
|
+
| **genres** (array of string): [optional]
|
|
80
|
+
| **isPrimeShipping** (boolean): [optional]
|
|
81
|
+
| **ratingRange** ({}): [optional] ``min`` and ``max`` integers.
|
|
82
|
+
| **priceRange** ({}): [optional] ``min`` and ``max`` numbers.
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
| ApiResponse, ``200``.
|
|
86
|
+
|
|
87
|
+
Raises:
|
|
88
|
+
| ``400`` when ``category`` is missing, naming that member.
|
|
89
|
+
"""
|
|
90
|
+
body = {'category': category}
|
|
91
|
+
for key in ('ageRanges', 'brands', 'genres', 'isPrimeShipping',
|
|
92
|
+
'ratingRange', 'priceRange'):
|
|
93
|
+
if key in kwargs:
|
|
94
|
+
body[key] = kwargs.pop(key)
|
|
95
|
+
return self._request(kwargs.pop('path'),
|
|
96
|
+
data=Utils.convert_body(body, False),
|
|
97
|
+
params=kwargs, headers={'Accept': self._MEDIA,
|
|
98
|
+
'Content-Type': self._MEDIA})
|
ad_api/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.1.
|
|
1
|
+
__version__ = "1.1.5"
|
|
@@ -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=KlgaVSJ1AQxCDJZgh4wFk-gpem-k9PfebW8U3hiKJD4,22
|
|
3
3
|
ad_api/api/__init__.py,sha256=E9c0ZyK4vplMlKKEBF8CV5u7P4uSkTMSQsAuSQu5bfY,1514
|
|
4
4
|
ad_api/api/account.py,sha256=CmOvCfHoPWaeTUJvtB0pNoNulZVSz4oMMCKIpVTpHos,2931
|
|
5
5
|
ad_api/api/advertising_test_account.py,sha256=btOVbdk2tBDmyKSJaQbcIFyzNG8KFJVUmTe4p9xMhpU,1507
|
|
@@ -24,7 +24,7 @@ ad_api/api/reports.py,sha256=gNmDHLULD2uaJgsMpIbCX9kabwhMXRr9WfZBtHUdsOY,6043
|
|
|
24
24
|
ad_api/api/stores.py,sha256=7W3RJKZyZOQ3nHzInvK9FDhWTXCH6Xe9a6dCBatEZ-o,2484
|
|
25
25
|
ad_api/api/stream.py,sha256=JpnF8SKniOAHiEnEq1RPrh6tNy-Q2-8GPBTmnlxEXqQ,2989
|
|
26
26
|
ad_api/api/validation_configurations.py,sha256=V3o06uWGwvA_Ly1x2lAiCk35Wo7DC_k8AtHgMdpm6wU,3830
|
|
27
|
-
ad_api/api/sb/__init__.py,sha256
|
|
27
|
+
ad_api/api/sb/__init__.py,sha256=O5D20u5EZdftFRLJLaVmkaLo_Ucs0f52ZEL5b1gkfW0,1488
|
|
28
28
|
ad_api/api/sb/ad_creatives_v4.py,sha256=86sF2lhSc3AC6d4P5TXyEnJMBjn9HvsJe4bbCQbSWK0,10508
|
|
29
29
|
ad_api/api/sb/ad_groups.py,sha256=W06Fk0CCsuEYen1Bd8obR6aHpOMhk6tGWNWApecw59c,2882
|
|
30
30
|
ad_api/api/sb/ad_groups_v4.py,sha256=f6KpOrJ2RsCa4aznP8vdGbXp0HGsCmLOvC9yXX2pESc,3669
|
|
@@ -47,6 +47,7 @@ ad_api/api/sb/product_targeting.py,sha256=o6aB3hIh9jKvi_uTXFi--1hpnPFuXzQ-U9N7VU
|
|
|
47
47
|
ad_api/api/sb/recommendations.py,sha256=_21L8tZPuArmJ30XyR1SKQHQH_yswvF0IMqwD9sLhgY,347
|
|
48
48
|
ad_api/api/sb/reports.py,sha256=icw5DpRrqfj0idEo0NN1GPDpIWQun2h_c2Uwc7CpNUA,3801
|
|
49
49
|
ad_api/api/sb/stores.py,sha256=sLdA6Lp37VR-ldu_sTUZIqc8MbMzysPhNOh05VaKBcA,4371
|
|
50
|
+
ad_api/api/sb/targeting_categories.py,sha256=mTU3hMEW_orG_D2mlTqUX14DEDPn9A11vH-wntECklk,4212
|
|
50
51
|
ad_api/api/sb/targeting_recommendations.py,sha256=_7NxD5kC-Od11QOuLT03qpLVxEOIZgy-BtzniWK4CI8,2862
|
|
51
52
|
ad_api/api/sb/themes.py,sha256=rjxdGcllaqLOUMoTKKgBVSH5iKuxMdF0w-dHq0X3-yU,4618
|
|
52
53
|
ad_api/api/sd/__init__.py,sha256=RulShFVpowt2L_ZMcifFVgVrQEg5Uf9_SlVRydUnTF4,911
|
|
@@ -106,8 +107,8 @@ ad_api/base/exceptions.py,sha256=9D3M40ZIlLS0fA-aQh1BTWPOW-Nvf0tRhbA85jFnDJ4,438
|
|
|
106
107
|
ad_api/base/helpers.py,sha256=naUkDLK466x_OBCPXxMlzRc2nPC6iQ6H_vyUji0MJJ0,2282
|
|
107
108
|
ad_api/base/marketplaces.py,sha256=44lvCcluXNpqTprWQ80e3weSQmQbJoWL-WDSOWVbCyQ,4657
|
|
108
109
|
ad_api/base/utils.py,sha256=_qnCBOvyJTLgaZjJzUWTi38GGLHkQszXELs79133Rb4,5618
|
|
109
|
-
python_amazon_ad_api-1.1.
|
|
110
|
-
python_amazon_ad_api-1.1.
|
|
111
|
-
python_amazon_ad_api-1.1.
|
|
112
|
-
python_amazon_ad_api-1.1.
|
|
113
|
-
python_amazon_ad_api-1.1.
|
|
110
|
+
python_amazon_ad_api-1.1.5.dist-info/licenses/LICENSE,sha256=h2rpqlmmLy-4l1tN6KpWAFxx1JEMYeEFrMrZUbx_B_o,1105
|
|
111
|
+
python_amazon_ad_api-1.1.5.dist-info/METADATA,sha256=Bv5SRj3TNj5OvxigNtRz_LataskuZX8W2VsBcKGrz_U,20486
|
|
112
|
+
python_amazon_ad_api-1.1.5.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
113
|
+
python_amazon_ad_api-1.1.5.dist-info/top_level.txt,sha256=nN9twUos-8pkP514ZwpvRU9YL9L2XyQyHsMQFfudGTU,7
|
|
114
|
+
python_amazon_ad_api-1.1.5.dist-info/RECORD,,
|
|
File without changes
|
{python_amazon_ad_api-1.1.4.dist-info → python_amazon_ad_api-1.1.5.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|