python-amazon-ad-api 1.5.5__py3-none-any.whl → 1.5.7__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/geo_locations.py +54 -0
- ad_api/api/v1/recommendation_types.py +48 -0
- ad_api/version.py +1 -1
- {python_amazon_ad_api-1.5.5.dist-info → python_amazon_ad_api-1.5.7.dist-info}/METADATA +3 -1
- {python_amazon_ad_api-1.5.5.dist-info → python_amazon_ad_api-1.5.7.dist-info}/RECORD +9 -7
- {python_amazon_ad_api-1.5.5.dist-info → python_amazon_ad_api-1.5.7.dist-info}/WHEEL +0 -0
- {python_amazon_ad_api-1.5.5.dist-info → python_amazon_ad_api-1.5.7.dist-info}/licenses/LICENSE +0 -0
- {python_amazon_ad_api-1.5.5.dist-info → python_amazon_ad_api-1.5.7.dist-info}/top_level.txt +0 -0
ad_api/api/v1/__init__.py
CHANGED
|
@@ -15,6 +15,8 @@ from .manager_accounts import ManagerAccounts
|
|
|
15
15
|
from .recommendations import Recommendations
|
|
16
16
|
from .selling_accounts import SellingAccounts
|
|
17
17
|
from .label_object_associations import LabelObjectAssociations
|
|
18
|
+
from .geo_locations import GeoLocations
|
|
19
|
+
from .recommendation_types import RecommendationTypes
|
|
18
20
|
|
|
19
21
|
__all__ = [
|
|
20
22
|
"Campaigns",
|
|
@@ -34,4 +36,6 @@ __all__ = [
|
|
|
34
36
|
"Recommendations",
|
|
35
37
|
"SellingAccounts",
|
|
36
38
|
"LabelObjectAssociations",
|
|
39
|
+
"GeoLocations",
|
|
40
|
+
"RecommendationTypes",
|
|
37
41
|
]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class GeoLocations(Client):
|
|
5
|
+
r"""
|
|
6
|
+
GeoLocations(account='default', marketplace: Marketplaces = Marketplaces.EU, credentials=None, debug=False)
|
|
7
|
+
|
|
8
|
+
Amazon Ads API v1 - geographic locations for targeting
|
|
9
|
+
|
|
10
|
+
One route, and it only creates:
|
|
11
|
+
|
|
12
|
+
POST /adsApi/v1/create/geoLocations
|
|
13
|
+
|
|
14
|
+
The contract declares no query and no delete, so a location created here
|
|
15
|
+
cannot be read back or removed through this family. Treat it as a write
|
|
16
|
+
that leaves an object in the account rather than as a lookup.
|
|
17
|
+
|
|
18
|
+
Two shapes sit under ``location``, exactly one of them per entry:
|
|
19
|
+
|
|
20
|
+
radiusLocation a point of interest and a radius around it
|
|
21
|
+
smartLocation postal codes picked by a sales index percentile
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
@sp_endpoint('/adsApi/v1/create/geoLocations', method='POST')
|
|
25
|
+
def create_geo_locations(self, **kwargs) -> ApiResponse:
|
|
26
|
+
r"""
|
|
27
|
+
create_geo_locations(body: dict) -> ApiResponse
|
|
28
|
+
|
|
29
|
+
Amazon Ads API v1 - Create Geo Locations (operationId: CreateGeoLocation)
|
|
30
|
+
|
|
31
|
+
Request Body [Required]
|
|
32
|
+
| **geoLocations** (list<GeoLocationCreate>) : [required] 1..100
|
|
33
|
+
| **location** (CreateGeoLocationUnion) : [required] one of:
|
|
34
|
+
| **radiusLocation** (CreateRadiusLocation)
|
|
35
|
+
| **pointOfInterestRadius** (double) : [required] kilometres or miles
|
|
36
|
+
| **units** (DistanceUnit) : [required] Enum [ KILOMETERS, MILES ]
|
|
37
|
+
| **coordinates** (CreateGeoLocationCoordinates) : latitude and longitude
|
|
38
|
+
| **pointOfInterestAddress** (string) : an address or a place name
|
|
39
|
+
| **smartLocation** (CreateSmartLocation)
|
|
40
|
+
| **locationIndexId** (string) : [required] the index the selection is based on
|
|
41
|
+
| **name** (string) : [required]
|
|
42
|
+
| **minIndexValuePercentile** (int) : 0..100
|
|
43
|
+
| **maxIndexValuePercentile** (int) : 0..100, greater than the minimum
|
|
44
|
+
|
|
45
|
+
Answer
|
|
46
|
+
207 MultiStatus with success[] and error[] indexed the same way;
|
|
47
|
+
each success carries the created GeoLocation and its position.
|
|
48
|
+
|
|
49
|
+
A radius needs at least 0.37 miles (2000 ft, 0.6 km), and the two
|
|
50
|
+
percentile values must not cross.
|
|
51
|
+
"""
|
|
52
|
+
schema_version = 'application/json'
|
|
53
|
+
headers = {"Accept": schema_version, "Content-Type": schema_version}
|
|
54
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
@@ -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)
|
ad_api/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.5.
|
|
1
|
+
__version__ = "1.5.7"
|
|
@@ -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.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
|
|
@@ -317,6 +317,8 @@ The v1 API lives under `/adsApi/v1/` and is **not** split by product: every call
|
|
|
317
317
|
* [Recommendations](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/recommendations.html#ad_api.api.v1.Recommendations.Recommendations.query_recommendations)
|
|
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
|
+
* [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)
|
|
320
322
|
|
|
321
323
|
|
|
322
324
|
### [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=oF7Y8496FUgsdoGzNFWSpl1UtgtgO43P0Tct09Fxbx0,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=N1e8b3-ZkHINLz7Ejdb4QGRoKa6R5qMaSYdDFpnBzVQ,1248
|
|
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
|
|
@@ -100,9 +100,11 @@ ad_api/api/v1/brand_store_editions.py,sha256=xW4z2jDWhNJn86tWlT3eLIRr0NEpxLhW1eA
|
|
|
100
100
|
ad_api/api/v1/brand_store_pages.py,sha256=TrSQbqlXqFv7i7RooxlFZOBrwYfEMPLvRPSJ9FjO87o,2765
|
|
101
101
|
ad_api/api/v1/brand_stores.py,sha256=zlBsKiOwmdSiIG9filgdqUlPnV6AX-gE6S5nNyAQACc,2131
|
|
102
102
|
ad_api/api/v1/campaigns.py,sha256=u5PlvoAhgVhMxbCvYkPgqtbYK3TXXcb7TMie0Qjrgwc,9573
|
|
103
|
+
ad_api/api/v1/geo_locations.py,sha256=gH1kR1rPQuIdzStB6wvWI40-XRo5yFyVI9AYYcjN5_8,2641
|
|
103
104
|
ad_api/api/v1/label_object_associations.py,sha256=zXuD5cUAfqL-PRObvjOM54KC356HFqnzA5ehpGSJPYk,2597
|
|
104
105
|
ad_api/api/v1/labels.py,sha256=jjPmafIQZTh99Ztj5MCcDC7UyoFFN0YuWdn2syqd3Yg,2438
|
|
105
106
|
ad_api/api/v1/manager_accounts.py,sha256=cNAs1Qq6SYG0y4_4UpNBDfItqBJ1NvYACsIvFc8h-rw,4980
|
|
107
|
+
ad_api/api/v1/recommendation_types.py,sha256=aEBfXu1EhzcRk9Nhin8_ieFiNnBiusX_vWviJw_qD08,2077
|
|
106
108
|
ad_api/api/v1/recommendations.py,sha256=RJfmwUQ4YOcTdXiHz_U2ArJ01B29vKleRS_avJFjS14,3737
|
|
107
109
|
ad_api/api/v1/reports.py,sha256=vJmWhIsALkX27HeijTsSUz3zrYhUBm4RodTCieJD8Y8,6657
|
|
108
110
|
ad_api/api/v1/selling_accounts.py,sha256=0_R4yzvXGp_gFyfcZeWJyeIr7Wh4eGpLfK12podXqGA,1941
|
|
@@ -122,8 +124,8 @@ ad_api/base/exceptions.py,sha256=9D3M40ZIlLS0fA-aQh1BTWPOW-Nvf0tRhbA85jFnDJ4,438
|
|
|
122
124
|
ad_api/base/helpers.py,sha256=UK7Q13vZ0mNdF54xzfzoGDn2O_cd2yPrK2X4rOzC41c,2334
|
|
123
125
|
ad_api/base/marketplaces.py,sha256=44lvCcluXNpqTprWQ80e3weSQmQbJoWL-WDSOWVbCyQ,4657
|
|
124
126
|
ad_api/base/utils.py,sha256=_qnCBOvyJTLgaZjJzUWTi38GGLHkQszXELs79133Rb4,5618
|
|
125
|
-
python_amazon_ad_api-1.5.
|
|
126
|
-
python_amazon_ad_api-1.5.
|
|
127
|
-
python_amazon_ad_api-1.5.
|
|
128
|
-
python_amazon_ad_api-1.5.
|
|
129
|
-
python_amazon_ad_api-1.5.
|
|
127
|
+
python_amazon_ad_api-1.5.7.dist-info/licenses/LICENSE,sha256=h2rpqlmmLy-4l1tN6KpWAFxx1JEMYeEFrMrZUbx_B_o,1105
|
|
128
|
+
python_amazon_ad_api-1.5.7.dist-info/METADATA,sha256=SYmqs9asFabdrtnqr0znjabRTKzoJminKJ-YBJhQDII,24150
|
|
129
|
+
python_amazon_ad_api-1.5.7.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
130
|
+
python_amazon_ad_api-1.5.7.dist-info/top_level.txt,sha256=nN9twUos-8pkP514ZwpvRU9YL9L2XyQyHsMQFfudGTU,7
|
|
131
|
+
python_amazon_ad_api-1.5.7.dist-info/RECORD,,
|
|
File without changes
|
{python_amazon_ad_api-1.5.5.dist-info → python_amazon_ad_api-1.5.7.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|