python-amazon-ad-api 1.0.1__py3-none-any.whl → 1.0.2__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 CHANGED
@@ -1,7 +1,9 @@
1
1
  from .campaigns import Campaigns
2
2
  from .ad_groups import AdGroups
3
+ from .ads import Ads
3
4
 
4
5
  __all__ = [
5
6
  "Campaigns",
6
7
  "AdGroups",
8
+ "Ads",
7
9
  ]
ad_api/api/v1/ads.py ADDED
@@ -0,0 +1,163 @@
1
+ from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
2
+
3
+
4
+ class Ads(Client):
5
+ r"""
6
+ Ads(account='default', marketplace: Marketplaces = Marketplaces.EU, credentials=None, debug=False)
7
+
8
+ Amazon Ads API v1 - unified Ads endpoints
9
+
10
+ The v1 API is not split by product: every call goes to the same resource
11
+ (``/adsApi/v1/...``) and the product is selected in the request body via
12
+ ``adProductFilter``.
13
+
14
+ """
15
+
16
+ @sp_endpoint('/adsApi/v1/query/ads', method='POST')
17
+ def query_ads(self, **kwargs) -> ApiResponse:
18
+ r"""
19
+ query_ads(body: dict) -> ApiResponse
20
+
21
+ Amazon Ads API v1 - Query Ads (operationId: QueryAd)
22
+
23
+ Request Body [Required]
24
+ | **adProductFilter** (dict) : [required]
25
+ | **include** (list<AdProduct>) : Enum [ AMAZON_DSP, SPONSORED_BRANDS, SPONSORED_DISPLAY, SPONSORED_PRODUCTS, SPONSORED_TELEVISION ]
26
+ | **adIdFilter** (dict) [optional]
27
+ | **include** (list<string>) : Ad identifiers
28
+ | **adGroupIdFilter** (dict) [optional]
29
+ | **include** (list<string>) : Ad group identifiers
30
+ | **campaignIdFilter** (dict) [optional]
31
+ | **include** (list<string>) : Campaign identifiers
32
+ | **marketplaceScopeFilter** (dict) [optional]
33
+ | **include** (list<MarketplaceScope>) : Enum [ GLOBAL, SINGLE_MARKETPLACE ]
34
+ | **nameFilter** (dict) [optional]
35
+ | **include** (list<string>) : Ad names
36
+ | **queryTermMatchType** (string) : [required] Enum [ BROAD_MATCH, EXACT_MATCH ]
37
+ | **retailerScopeFilter** (dict) [optional]
38
+ | **include** (list<RetailerScope>) : Enum [ AMAZON, OTHER_RETAILERS ]
39
+ | **stateFilter** (dict) [optional]
40
+ | **include** (list<State>) : Enum [ ARCHIVED, DRAFT, ENABLED, PAUSED ]
41
+ | **maxResults** (int) [optional] Maximum number of records in the response
42
+ | **nextToken** (string) [optional] Token to navigate to the next page
43
+
44
+ Headers
45
+ | **Amazon-Ads-AccountId** (string) [optional] Advertiser account identifier
46
+
47
+ Returns
48
+ ApiResponse
49
+ | **ads** (list), **nextToken** (string)
50
+
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)
55
+
56
+ @sp_endpoint('/adsApi/v1/create/ads', method='POST')
57
+ def create_ads(self, **kwargs) -> ApiResponse:
58
+ r"""
59
+ create_ads(body: dict) -> ApiResponse
60
+
61
+ Amazon Ads API v1 - Create Ads (operationId: CreateAd)
62
+
63
+ Request Body [Required]
64
+ | **ads** (list<dict>) : [required] One or more ad objects.
65
+ Each object requires **adProduct**, **adType**, **creative** and **state**.
66
+
67
+ Ad fields
68
+ | **adProduct** (string) : [required] Enum [ AMAZON_DSP, SPONSORED_BRANDS, SPONSORED_DISPLAY, SPONSORED_PRODUCTS, SPONSORED_TELEVISION ]
69
+ | **adType** (string) : [required] Enum [ AUDIO, COMPONENT, DISPLAY, PRODUCT_AD, THIRD_PARTY, VIDEO ]
70
+ | **creative** (dict) : [required] Exactly one of the six variants below
71
+ | **state** (string) : [required] Enum [ DRAFT, ENABLED, PAUSED ]
72
+ | **adGroupId** (string) [optional] Identifier of the parent ad group
73
+ | **name** (string) [optional] Name of the ad
74
+ | **marketplaceScope** (string) : Enum [ GLOBAL, SINGLE_MARKETPLACE ]
75
+ | **marketplaces** (list<dict>) : Marketplaces where the ad runs
76
+ | **marketplaceConfigurations** (list<dict>) : Per marketplace overrides
77
+ | **tags** (list<dict>) : Each with **key** and **value** (both required)
78
+
79
+ Creative variants (use exactly one, matching ``adType``)
80
+ | **audioCreative** (dict) : For ``AUDIO``
81
+ | **displayCreative** (dict) : For ``DISPLAY``, carries ``standardDisplaySettings``
82
+ | **videoCreative** (dict) : For ``VIDEO``, carries ``onlineVideoSettings`` / ``streamingTvSettings``
83
+ | **thirdPartyCreative** (dict) : For ``THIRD_PARTY``, carries ``thirdPartyDisplaySettings`` / ``thirdPartyVideoSettings``
84
+ | **componentCreative** (dict) : For ``COMPONENT``, carries ``assetBasedCreativeSettings``,
85
+ ``autoCollectionSettings``, ``brandGallerySettings``, ``brandStoreSettings``,
86
+ ``manualCollectionSettings``, ``productCollectionSettings``,
87
+ ``productVideoSettings``, ``responsiveEcommerceSettings``,
88
+ ``storeSpotlightSettings``
89
+ | **productCreative** (dict) : For ``PRODUCT_AD``, carries ``productCreativeSettings``
90
+
91
+ Example of the envelope::
92
+
93
+ {"creative": {"productCreative": {"productCreativeSettings": {...}}}}
94
+
95
+ Headers
96
+ | **Amazon-Ads-AccountId** (string) [optional] Advertiser account identifier
97
+
98
+ Returns
99
+ ApiResponse
100
+ | **207** MultiStatus response with partial errors. Inspect the payload
101
+ to know which ads were created and which failed.
102
+
103
+ """
104
+ schema_version = 'application/json'
105
+ headers = {"Accept": schema_version, "Content-Type": schema_version}
106
+ return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
107
+
108
+ @sp_endpoint('/adsApi/v1/update/ads', method='POST')
109
+ def update_ads(self, **kwargs) -> ApiResponse:
110
+ r"""
111
+ update_ads(body: dict) -> ApiResponse
112
+
113
+ Amazon Ads API v1 - Update Ads (operationId: UpdateAd)
114
+
115
+ Request Body [Required]
116
+ | **ads** (list<dict>) : [required] One or more ad objects.
117
+ Each object requires **adId** and may include any of the fields below.
118
+
119
+ Ad fields [optional except adId]
120
+ | **adId** (string) : [required] The identifier of the ad to update.
121
+ | **creative** (dict) : Same six-variant envelope as in create
122
+ | **name** (string) : Name of the ad
123
+ | **state** (string) : Enum [ DRAFT, ENABLED, PAUSED ]
124
+ | **marketplaceScope** (string) : Enum [ GLOBAL, SINGLE_MARKETPLACE ]
125
+ | **marketplaces** (list<dict>)
126
+ | **marketplaceConfigurations** (list<dict>)
127
+ | **tags** (list<dict>)
128
+
129
+ Headers
130
+ | **Amazon-Ads-AccountId** (string) [optional] Advertiser account identifier
131
+
132
+ Returns
133
+ ApiResponse
134
+ | **207** MultiStatus response with partial errors. Inspect the payload
135
+ to know which ads were updated and which failed.
136
+
137
+ """
138
+ schema_version = 'application/json'
139
+ headers = {"Accept": schema_version, "Content-Type": schema_version}
140
+ return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
141
+
142
+ @sp_endpoint('/adsApi/v1/delete/ads', method='POST')
143
+ def delete_ads(self, **kwargs) -> ApiResponse:
144
+ r"""
145
+ delete_ads(body: dict) -> ApiResponse
146
+
147
+ Amazon Ads API v1 - Delete Ads (operationId: DeleteAd)
148
+
149
+ Request Body [Required]
150
+ | **adIds** (list<string>) : [required] Ad identifiers to delete
151
+
152
+ Headers
153
+ | **Amazon-Ads-AccountId** (string) [optional] Advertiser account identifier
154
+
155
+ Returns
156
+ ApiResponse
157
+ | **207** MultiStatus response with partial errors. Inspect the payload
158
+ to know which ad ids succeeded and which failed.
159
+
160
+ """
161
+ schema_version = 'application/json'
162
+ headers = {"Accept": schema_version, "Content-Type": schema_version}
163
+ 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.0.1"
1
+ __version__ = "1.0.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-amazon-ad-api
3
- Version: 1.0.1
3
+ Version: 1.0.2
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
@@ -299,37 +299,13 @@ There is a new version 3 Portfolios API, please check the [migration guide](http
299
299
  * [Get test account information](https://python-amazon-ad-api.readthedocs.io/en/latest/api/advertising_test_account.html#ad_api.api.AdvertisingTestAccount.AdvertisingTestAccount.get_test_account)
300
300
 
301
301
 
302
- ### Amazon Ads API v1 (new, unified)
302
+ ### [Amazon Ads API v1 (new, unified)](https://python-amazon-ad-api.readthedocs.io/en/latest/v1.html)
303
303
 
304
304
  The v1 API lives under `/adsApi/v1/` and is **not** split by product: every call targets the same resource and the product is selected in the request body with `adProductFilter`. It supersedes the per-product v2/v3 endpoints.
305
305
 
306
- ```python
307
- from ad_api.api import v1
308
- ```
309
-
310
- | Method | Endpoint | Body |
311
- |---|---|---|
312
- | `query_campaigns` | `POST /adsApi/v1/query/campaigns` | filters + `maxResults`/`nextToken` |
313
- | `create_campaigns` | `POST /adsApi/v1/create/campaigns` | `campaigns[]` (`adProduct`, `name`, `state` required) |
314
- | `update_campaigns` | `POST /adsApi/v1/update/campaigns` | `campaigns[]` (`campaignId` required) |
315
- | `delete_campaigns` | `POST /adsApi/v1/delete/campaigns` | `campaignIds[]` |
316
-
317
- All four return a **207 MultiStatus** response (except `query_campaigns`, which returns 200), so check the payload for per-entity errors.
306
+ * [Campaigns](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/campaigns.html#ad_api.api.v1.Campaigns.Campaigns.query_campaigns)
307
+ * [Ad Groups](https://python-amazon-ad-api.readthedocs.io/en/latest/v1/ad_groups.html#ad_api.api.v1.AdGroups.AdGroups.query_ad_groups)
318
308
 
319
- ```python
320
- from ad_api.api import v1
321
-
322
- result = v1.Campaigns(credentials=credentials, debug=True).query_campaigns(
323
- body={
324
- "adProductFilter": {"include": ["SPONSORED_PRODUCTS"]},
325
- "stateFilter": {"include": ["ENABLED"]},
326
- "maxResults": 100,
327
- }
328
- )
329
-
330
- campaigns = result.payload.get("campaigns")
331
- next_token = result.payload.get("nextToken")
332
- ```
333
309
 
334
310
  ### [Modules Available Sponsored Products 2.0](https://python-amazon-ad-api.readthedocs.io/en/latest/sp_v2.html)
335
311
 
@@ -409,6 +385,23 @@ Warning: `list_campaigns` is deprecated. Use the v1 `query_campaigns` method ins
409
385
 
410
386
  * [Reports](https://python-amazon-ad-api.readthedocs.io/en/latest/dsp/reports.html)
411
387
 
388
+ ### Amazon Ads API v1 - basic example
389
+
390
+ ```python
391
+ from ad_api.api import v1
392
+
393
+ result = v1.Campaigns(credentials=credentials, debug=True).query_campaigns(
394
+ body={
395
+ "adProductFilter": {"include": ["SPONSORED_PRODUCTS"]},
396
+ "stateFilter": {"include": ["ENABLED"]},
397
+ "maxResults": 100,
398
+ }
399
+ )
400
+
401
+ campaigns = result.payload.get("campaigns")
402
+ next_token = result.payload.get("nextToken")
403
+ ```
404
+
412
405
  ### Simple Example Usage Campaigns with Credentials (v3, legacy)
413
406
 
414
407
  Warning: this example uses `CampaignsV3.list_campaigns`, which is deprecated. See the v1 `query_campaigns` example above.
@@ -1,5 +1,5 @@
1
1
  ad_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- ad_api/version.py,sha256=d4QHYmS_30j0hPN8NmNPnQ_Z0TphDRbu4MtQj9cT9e8,22
2
+ ad_api/version.py,sha256=Y3LSfRioSl2xch70pq_ULlvyECXyEtN3krVaWeGyaxk,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
@@ -103,8 +103,9 @@ ad_api/api/sp/reports.py,sha256=OMNHL86doMZpbcLixIN1GLf6Mtm_KRxxxs6_vuzMLbU,5381
103
103
  ad_api/api/sp/schedule_based_bid_optimization.py,sha256=G8VkS7iP1lTIAxZgbfRCLz8njw1DkVH9HQPOZ63pWNU,2371
104
104
  ad_api/api/sp/snapshots.py,sha256=Pl72FpsTRhgA-FQYapTCAqhKLioUMn_Bdru502TS_RE,2969
105
105
  ad_api/api/sp/suggested_keywords.py,sha256=cmE8W6q9bIBVt9Zuy1bZKOWErvcIuOyCt8-XAgrhnu8,3553
106
- ad_api/api/v1/__init__.py,sha256=cm5OiA9-C0GGZZweFtJSRmwICMJqmvx8jHa6whHUEYc,113
106
+ ad_api/api/v1/__init__.py,sha256=Z6lR-p-gu-OQbdLOM_Zr-zfuvXN-O8fGYXvnmobCCMs,145
107
107
  ad_api/api/v1/ad_groups.py,sha256=pQhCVdve_O6kbL4mBA5bxxhKcKNl_BKqa7z9DvrxwaM,12626
108
+ ad_api/api/v1/ads.py,sha256=YwZGQ-4WuYquleELtwRI9L8w0fGw7FBRejQE-tZ5hKY,7941
108
109
  ad_api/api/v1/campaigns.py,sha256=u5PlvoAhgVhMxbCvYkPgqtbYK3TXXcb7TMie0Qjrgwc,9573
109
110
  ad_api/auth/__init__.py,sha256=B_yKdmsHENQaKfMFAIcSxQqG4aBUmNBm5orKIMUYObk,229
110
111
  ad_api/auth/access_token_client.py,sha256=_V0FGXRmqRNMb1fz1AGqnR6gYr_WqFkMTbK1os0yoIk,2983
@@ -121,8 +122,8 @@ ad_api/base/exceptions.py,sha256=9D3M40ZIlLS0fA-aQh1BTWPOW-Nvf0tRhbA85jFnDJ4,438
121
122
  ad_api/base/helpers.py,sha256=naUkDLK466x_OBCPXxMlzRc2nPC6iQ6H_vyUji0MJJ0,2282
122
123
  ad_api/base/marketplaces.py,sha256=44lvCcluXNpqTprWQ80e3weSQmQbJoWL-WDSOWVbCyQ,4657
123
124
  ad_api/base/utils.py,sha256=_qnCBOvyJTLgaZjJzUWTi38GGLHkQszXELs79133Rb4,5618
124
- python_amazon_ad_api-1.0.1.dist-info/licenses/LICENSE,sha256=h2rpqlmmLy-4l1tN6KpWAFxx1JEMYeEFrMrZUbx_B_o,1105
125
- python_amazon_ad_api-1.0.1.dist-info/METADATA,sha256=JnL3S_-0jilHP0OqdJlnmKideMkHedRNTzJvh98rBxk,20577
126
- python_amazon_ad_api-1.0.1.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
127
- python_amazon_ad_api-1.0.1.dist-info/top_level.txt,sha256=nN9twUos-8pkP514ZwpvRU9YL9L2XyQyHsMQFfudGTU,7
128
- python_amazon_ad_api-1.0.1.dist-info/RECORD,,
125
+ python_amazon_ad_api-1.0.2.dist-info/licenses/LICENSE,sha256=h2rpqlmmLy-4l1tN6KpWAFxx1JEMYeEFrMrZUbx_B_o,1105
126
+ python_amazon_ad_api-1.0.2.dist-info/METADATA,sha256=0nzo2nhaWDo6X5cyMsKkS-6dbMIK7DWfgV0U7lVuCHQ,20342
127
+ python_amazon_ad_api-1.0.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
128
+ python_amazon_ad_api-1.0.2.dist-info/top_level.txt,sha256=nN9twUos-8pkP514ZwpvRU9YL9L2XyQyHsMQFfudGTU,7
129
+ python_amazon_ad_api-1.0.2.dist-info/RECORD,,