python-amazon-ad-api 1.5.4__py3-none-any.whl → 1.5.6__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/label_object_associations.py +57 -0
- ad_api/version.py +1 -1
- {python_amazon_ad_api-1.5.4.dist-info → python_amazon_ad_api-1.5.6.dist-info}/METADATA +3 -1
- {python_amazon_ad_api-1.5.4.dist-info → python_amazon_ad_api-1.5.6.dist-info}/RECORD +9 -7
- {python_amazon_ad_api-1.5.4.dist-info → python_amazon_ad_api-1.5.6.dist-info}/WHEEL +0 -0
- {python_amazon_ad_api-1.5.4.dist-info → python_amazon_ad_api-1.5.6.dist-info}/licenses/LICENSE +0 -0
- {python_amazon_ad_api-1.5.4.dist-info → python_amazon_ad_api-1.5.6.dist-info}/top_level.txt +0 -0
ad_api/api/v1/__init__.py
CHANGED
|
@@ -14,6 +14,8 @@ from .labels import Labels
|
|
|
14
14
|
from .manager_accounts import ManagerAccounts
|
|
15
15
|
from .recommendations import Recommendations
|
|
16
16
|
from .selling_accounts import SellingAccounts
|
|
17
|
+
from .label_object_associations import LabelObjectAssociations
|
|
18
|
+
from .geo_locations import GeoLocations
|
|
17
19
|
|
|
18
20
|
__all__ = [
|
|
19
21
|
"Campaigns",
|
|
@@ -32,4 +34,6 @@ __all__ = [
|
|
|
32
34
|
"ManagerAccounts",
|
|
33
35
|
"Recommendations",
|
|
34
36
|
"SellingAccounts",
|
|
37
|
+
"LabelObjectAssociations",
|
|
38
|
+
"GeoLocations",
|
|
35
39
|
]
|
|
@@ -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,57 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class LabelObjectAssociations(Client):
|
|
5
|
+
r"""
|
|
6
|
+
LabelObjectAssociations(account='default', marketplace: Marketplaces = Marketplaces.EU, credentials=None, debug=False)
|
|
7
|
+
|
|
8
|
+
Amazon Ads API v1 - label to object associations
|
|
9
|
+
|
|
10
|
+
One route, read only:
|
|
11
|
+
|
|
12
|
+
POST /adsApi/v1/query/labelObjectAssociations
|
|
13
|
+
|
|
14
|
+
Labels itself lists the labels that exist. This family lists what each
|
|
15
|
+
label is applied to, so the pair answers "which labels do I have" and
|
|
16
|
+
"what is tagged".
|
|
17
|
+
|
|
18
|
+
The required member is ``labelObjectTypeFilter``, not the adProductFilter
|
|
19
|
+
the campaign families carry, and it takes exactly one value:
|
|
20
|
+
|
|
21
|
+
AD_GROUP, CAMPAIGN, DEAL, INVENTORY_GROUP
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
@sp_endpoint('/adsApi/v1/query/labelObjectAssociations', method='POST')
|
|
25
|
+
def query_label_object_associations(self, **kwargs) -> ApiResponse:
|
|
26
|
+
r"""
|
|
27
|
+
query_label_object_associations(body: dict) -> ApiResponse
|
|
28
|
+
|
|
29
|
+
Amazon Ads API v1 - Query Label Object Associations (operationId: QueryLabelObjectAssociation)
|
|
30
|
+
|
|
31
|
+
Request Body [Required]
|
|
32
|
+
| **labelObjectTypeFilter** (dict) : [required] exactly one value
|
|
33
|
+
| **include** (list<LabelObjectType>) : Enum [ AD_GROUP, CAMPAIGN, DEAL, INVENTORY_GROUP ]
|
|
34
|
+
| **adProductFilter** (dict) : [optional] exactly one value
|
|
35
|
+
| **labelIdFilter** (dict) : [optional] 1..50 ids
|
|
36
|
+
| **labelObjectIdFilter** (dict) : [optional] 1..50 ids
|
|
37
|
+
| **maxResults** (int) : 1..5000, default 100
|
|
38
|
+
| **nextToken** (string)
|
|
39
|
+
|
|
40
|
+
Returns
|
|
41
|
+
| **labelObjectAssociations** (list<LabelObjectAssociation>) : 0..5000
|
|
42
|
+
| **labelObjectAssociationId** (string) : [required]
|
|
43
|
+
| **labelId** (string) : [required] the label being applied
|
|
44
|
+
| **labelObjectId** (string) : [required] the object, e.g. a deal id or an ad group id
|
|
45
|
+
| **labelObjectType** (LabelObjectType) : [required]
|
|
46
|
+
| **adProduct** (AdProduct)
|
|
47
|
+
| **nextToken** (string)
|
|
48
|
+
|
|
49
|
+
maxResults reaches 5000 here, far above the 100 of the campaign
|
|
50
|
+
families, because associations grow with the number of tagged objects.
|
|
51
|
+
|
|
52
|
+
Requires one of these permissions:
|
|
53
|
+
campaign_edit, campaign_view
|
|
54
|
+
"""
|
|
55
|
+
schema_version = 'application/json'
|
|
56
|
+
headers = {"Accept": schema_version, "Content-Type": schema_version}
|
|
57
|
+
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.6"
|
|
@@ -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.6
|
|
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
|
|
@@ -316,6 +316,8 @@ The v1 API lives under `/adsApi/v1/` and is **not** split by product: every call
|
|
|
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
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
|
+
* [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)
|
|
319
321
|
|
|
320
322
|
|
|
321
323
|
### [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=u_3L7bjAA3w8BLRhTxxaVOCj_Cwsqn8JR4UZjPNAWbY,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=Y51M9bFX_nZhuiiJ1Co_9nQXi5fpCQSdK6BU75NPzqc,1167
|
|
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,6 +100,8 @@ 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
|
|
104
|
+
ad_api/api/v1/label_object_associations.py,sha256=zXuD5cUAfqL-PRObvjOM54KC356HFqnzA5ehpGSJPYk,2597
|
|
103
105
|
ad_api/api/v1/labels.py,sha256=jjPmafIQZTh99Ztj5MCcDC7UyoFFN0YuWdn2syqd3Yg,2438
|
|
104
106
|
ad_api/api/v1/manager_accounts.py,sha256=cNAs1Qq6SYG0y4_4UpNBDfItqBJ1NvYACsIvFc8h-rw,4980
|
|
105
107
|
ad_api/api/v1/recommendations.py,sha256=RJfmwUQ4YOcTdXiHz_U2ArJ01B29vKleRS_avJFjS14,3737
|
|
@@ -121,8 +123,8 @@ ad_api/base/exceptions.py,sha256=9D3M40ZIlLS0fA-aQh1BTWPOW-Nvf0tRhbA85jFnDJ4,438
|
|
|
121
123
|
ad_api/base/helpers.py,sha256=UK7Q13vZ0mNdF54xzfzoGDn2O_cd2yPrK2X4rOzC41c,2334
|
|
122
124
|
ad_api/base/marketplaces.py,sha256=44lvCcluXNpqTprWQ80e3weSQmQbJoWL-WDSOWVbCyQ,4657
|
|
123
125
|
ad_api/base/utils.py,sha256=_qnCBOvyJTLgaZjJzUWTi38GGLHkQszXELs79133Rb4,5618
|
|
124
|
-
python_amazon_ad_api-1.5.
|
|
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.
|
|
126
|
+
python_amazon_ad_api-1.5.6.dist-info/licenses/LICENSE,sha256=h2rpqlmmLy-4l1tN6KpWAFxx1JEMYeEFrMrZUbx_B_o,1105
|
|
127
|
+
python_amazon_ad_api-1.5.6.dist-info/METADATA,sha256=P-mpEe8OlzMB8dA-eu4MQkFh6nXHkr4Ey09arRKBTew,23957
|
|
128
|
+
python_amazon_ad_api-1.5.6.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
129
|
+
python_amazon_ad_api-1.5.6.dist-info/top_level.txt,sha256=nN9twUos-8pkP514ZwpvRU9YL9L2XyQyHsMQFfudGTU,7
|
|
130
|
+
python_amazon_ad_api-1.5.6.dist-info/RECORD,,
|
|
File without changes
|
{python_amazon_ad_api-1.5.4.dist-info → python_amazon_ad_api-1.5.6.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|