python-amazon-ad-api 1.1.8__py3-none-any.whl → 1.2.0__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/audiences.py CHANGED
@@ -7,8 +7,6 @@ class Audiences(Client):
7
7
  @sp_endpoint('/audiences/taxonomy/list', method='POST')
8
8
  def list_audiences_taxonomy(self, **kwargs) -> ApiResponse:
9
9
  r"""
10
- list_audiences_taxonomy(body: dict or str, **kwargs) -> ApiResponse:
11
-
12
10
  Returns a list of audience categories for a given category path
13
11
 
14
12
  Requires one of these permissions: ["advertiser_campaign_edit","advertiser_campaign_view"]
@@ -22,18 +20,15 @@ class Audiences(Client):
22
20
  **maxResults**: *integer* (query) Sets the maximum number of categories in the returned array. Use in conjunction with the nextToken parameter to control pagination. For example, supplying maxResults=20 with a previously returned token will fetch up to the next 20 items. In some cases, fewer items may be returned. Default value : 250
23
21
 
24
22
  **body**: *dict or str* (data) REQUIRED
25
- {
26
-
27
- "adType": **string** Enum [ DSP, SD ]
28
23
 
29
- "categoryPath":
30
-
31
- [
32
-
33
- **string**
24
+ .. code-block:: json
34
25
 
26
+ {
27
+ "adType": "DSP",
28
+ "categoryPath": [
29
+ "string"
35
30
  ]
36
- }
31
+ }
37
32
 
38
33
  Returns ApiResponse
39
34
 
@@ -44,8 +39,6 @@ class Audiences(Client):
44
39
  @sp_endpoint('/audiences/list', method='POST')
45
40
  def list_audiences(self, **kwargs) -> ApiResponse:
46
41
  r"""
47
- list_audiences(body: dict or str, **kwargs) -> ApiResponse:
48
-
49
42
  Returns a list of audience segments for an advertiser. The result set can be filtered by providing an array of Filter objects. Each item in the resulting set will match all specified filters.
50
43
 
51
44
  Requires one of these permissions: ["advertiser_campaign_edit","advertiser_campaign_view"]
@@ -31,10 +31,13 @@ class AdGroupsV4(Client):
31
31
  """
32
32
  Update Sponsored Brand Ad groups.
33
33
 
34
- Request Body
35
- | campaignId (string) : The identifier of the campaign to which the keyword is associated. [optional]
36
- | name (string) : The name of the ad group. [optional]
37
- | state (CreateOrUpdateEntityState > string) : Entity state for create or update operation. Enum : [ENABLED, PAUSED]
34
+ Request Body
35
+
36
+ - ``campaignId`` (string) : The identifier of the campaign to which the
37
+ keyword is associated. [optional]
38
+ - ``name`` (string) : The name of the ad group. [optional]
39
+ - ``state`` (CreateOrUpdateEntityState > string) : Entity state for
40
+ create or update operation. Enum : [ENABLED, PAUSED]
38
41
 
39
42
  Returns
40
43
  ApiResponse
ad_api/api/sb/ads_v4.py CHANGED
@@ -8,13 +8,13 @@ class AdsV4(Client):
8
8
  Lists all Sponsored Brands ads.
9
9
 
10
10
  Request Body (optional)
11
- | **campaignIdFilter** (dict) : Filter entities by the list of objectIds.
12
- | **stateFilter** (dict) : Filter entities by state.
13
- | **maxResults** (int) : Number of records to include in the paginated response. Defaults to max page size for given API.
14
- | **nextToken** (string) : Token value allowing to navigate to the next response page.
15
- | **adIdFilter** (dict) : Filter entities by the list of objectIds.
16
- | **adGroupIdFilter** (dict) : Filter entities by the list of objectIds.
17
- | **nameFilter** (dict) : Filter entities by name.
11
+ | **campaignIdFilter** (dict) : Filter entities by the list of objectIds.
12
+ | **stateFilter** (dict) : Filter entities by state.
13
+ | **maxResults** (int) : Number of records to include in the paginated response. Defaults to max page size for given API.
14
+ | **nextToken** (string) : Token value allowing to navigate to the next response page.
15
+ | **adIdFilter** (dict) : Filter entities by the list of objectIds.
16
+ | **adGroupIdFilter** (dict) : Filter entities by the list of objectIds.
17
+ | **nameFilter** (dict) : Filter entities by name.
18
18
 
19
19
 
20
20
  Returns
@@ -33,13 +33,13 @@ class AdsV4(Client):
33
33
  Creates Sponsored Brand video ads.
34
34
 
35
35
  Request Body (required)
36
- | **ads** ([{}]) :
37
- **name** (string) : The name of the ad
38
- **state** (CreateOrUpdateEntityState > String) Entity state for create or update operation. Enum : [ENABLED, PAUSED]
39
- **adGroupId** (string) : The adGroup identifier.
40
- **creative** (dict) :
41
- asins ([string]) [optional]
42
- videoAssetIds ([string]) [optional]
36
+ | **ads** ([{}]) :
37
+ **name** (string) : The name of the ad
38
+ **state** (CreateOrUpdateEntityState > String) Entity state for create or update operation. Enum : [ENABLED, PAUSED]
39
+ **adGroupId** (string) : The adGroup identifier.
40
+ **creative** (dict) :
41
+ asins ([string]) [optional]
42
+ videoAssetIds ([string]) [optional]
43
43
 
44
44
  Returns
45
45
  ApiResponse
@@ -57,21 +57,21 @@ class AdsV4(Client):
57
57
  Creates Sponsored Brands product collection ads.
58
58
 
59
59
  Request Body (required)
60
- | **ads** ([{}]) :
61
- **landingPage** (dict) :
62
- asins [string] [optional]
63
- pageType (LadingPageType > String ) : The type of landing page, such as store page, product list (simple landing page), custom url. [optional]
64
- url (string) : URL of an existing simple landing page or Store page. [optional]
65
- **name** (string) : The name of the ad
66
- **state** (CreateOrUpdateEntityState > String) Entity state for create or update operation. Enum : [ENABLED, PAUSED]
67
- **adGroupId** (string) : The adGroup identifier.
68
- **creative** (dict) :
69
- brandLogoCrop (string) [optional]
70
- brandName (string) [optional]
71
- customImageAssetId (string)
72
- customImageCrop ({int}) [optional]
73
- brandLogoAssetID (string) [optional]
74
- headline (string) The headline text [optional]
60
+ | **ads** ([{}]) :
61
+ **landingPage** (dict) :
62
+ asins [string] [optional]
63
+ pageType (LadingPageType > String ) : The type of landing page, such as store page, product list (simple landing page), custom url. [optional]
64
+ url (string) : URL of an existing simple landing page or Store page. [optional]
65
+ **name** (string) : The name of the ad
66
+ **state** (CreateOrUpdateEntityState > String) Entity state for create or update operation. Enum : [ENABLED, PAUSED]
67
+ **adGroupId** (string) : The adGroup identifier.
68
+ **creative** (dict) :
69
+ brandLogoCrop (string) [optional]
70
+ brandName (string) [optional]
71
+ customImageAssetId (string)
72
+ customImageCrop ({int}) [optional]
73
+ brandLogoAssetID (string) [optional]
74
+ headline (string) The headline text [optional]
75
75
 
76
76
  Returns
77
77
  ApiResponse
@@ -89,21 +89,21 @@ class AdsV4(Client):
89
89
  Creates Sponsored Brands brand video ads.
90
90
 
91
91
  Request Body (required)
92
- | **ads** ([{}]) :
93
- **landingPage** (dict) :
94
- asins [string] [optional]
95
- pageType (LadingPageType > String ) : The type of landing page, such as store page, product list (simple landing page), custom url. [optional]
96
- url (string) : URL of an existing simple landing page or Store page. [optional]
97
- **name** (string) : The name of the ad
98
- **state** (CreateOrUpdateEntityState > String) Entity state for create or update operation. Enum : [ENABLED, PAUSED]
99
- **adGroupId** (string) : The adGroup identifier.
100
- **creative** (dict) :
101
- asins ([string])
102
- brandName (string) [optional]
103
- brandLogoCrop ({}) [optional]
104
- videoAssetIds ([string]) [optional]
105
- brandLogoAssetID (string) [optional]
106
- headline (string) The headline text [optional]
92
+ | **ads** ([{}]) :
93
+ **landingPage** (dict) :
94
+ asins [string] [optional]
95
+ pageType (LadingPageType > String ) : The type of landing page, such as store page, product list (simple landing page), custom url. [optional]
96
+ url (string) : URL of an existing simple landing page or Store page. [optional]
97
+ **name** (string) : The name of the ad
98
+ **state** (CreateOrUpdateEntityState > String) Entity state for create or update operation. Enum : [ENABLED, PAUSED]
99
+ **adGroupId** (string) : The adGroup identifier.
100
+ **creative** (dict) :
101
+ asins ([string])
102
+ brandName (string) [optional]
103
+ brandLogoCrop ({}) [optional]
104
+ videoAssetIds ([string]) [optional]
105
+ brandLogoAssetID (string) [optional]
106
+ headline (string) The headline text [optional]
107
107
 
108
108
  Returns
109
109
  ApiResponse
@@ -120,20 +120,20 @@ class AdsV4(Client):
120
120
  Creates Sponsored Brands store spotlight ads.
121
121
 
122
122
  Request Body (required)
123
- | **ads** ([{}]) :
124
- **landingPage** (dict) :
125
- asins [string] [optional]
126
- pageType (LadingPageType > String ) : The type of landing page, such as store page, product list (simple landing page), custom url. [optional]
127
- url (string) : URL of an existing simple landing page or Store page. [optional]
128
- **name** (string) : The name of the ad
129
- **state** (CreateOrUpdateEntityState > String) Entity state for create or update operation. Enum : [ENABLED, PAUSED]
130
- **adGroupId** (string) : The adGroup identifier.
131
- **creative** (dict) :
132
- brandLogoCrop (string) [optional]
133
- brandName (string) [optional]
134
- subpages (string) [optional]
135
- brandLogoAssetID (string) [optional]
136
- headline (string) The headline text [optional]
123
+ | **ads** ([{}]) :
124
+ **landingPage** (dict) :
125
+ asins [string] [optional]
126
+ pageType (LadingPageType > String ) : The type of landing page, such as store page, product list (simple landing page), custom url. [optional]
127
+ url (string) : URL of an existing simple landing page or Store page. [optional]
128
+ **name** (string) : The name of the ad
129
+ **state** (CreateOrUpdateEntityState > String) Entity state for create or update operation. Enum : [ENABLED, PAUSED]
130
+ **adGroupId** (string) : The adGroup identifier.
131
+ **creative** (dict) :
132
+ brandLogoCrop (string) [optional]
133
+ brandName (string) [optional]
134
+ subpages (string) [optional]
135
+ brandLogoAssetID (string) [optional]
136
+ headline (string) The headline text [optional]
137
137
 
138
138
  Returns
139
139
  ApiResponse
@@ -150,10 +150,10 @@ class AdsV4(Client):
150
150
  Updates the Sponsored Brands ads.
151
151
 
152
152
  Request Body (required)
153
- | **ads** ([{}]) :
154
- **adsId** (string) [required] : The product ad identifier.
155
- name (string) [optional] : The name of the ad
156
- state (State>String) [optional] : Entity state for create or update operation. Enum : [ENABLED, PAUSED]
153
+ | **ads** ([{}]) :
154
+ **adsId** (string) [required] : The product ad identifier.
155
+ name (string) [optional] : The name of the ad
156
+ state (State>String) [optional] : Entity state for create or update operation. Enum : [ENABLED, PAUSED]
157
157
 
158
158
  Returns
159
159
  ApiResponse
@@ -250,8 +250,8 @@ class AdsV4(Client):
250
250
  Deletes Sponsored Brands ads.
251
251
 
252
252
  Request Body
253
- | **adIdFilter** (dict) : Filter entities by the list of objectIds.
254
- include : list of adIds as string
253
+ | **adIdFilter** (dict) : Filter entities by the list of objectIds.
254
+ include : list of adIds as string
255
255
 
256
256
  """
257
257
 
@@ -113,10 +113,11 @@ class Migration(Client):
113
113
  Lists every campaign migration result for the advertiser.
114
114
 
115
115
  Request Body [Optional]
116
- | **nextToken** (string): [optional]
116
+
117
+ - ``nextToken`` (string): [optional]
117
118
 
118
119
  Returns:
119
- | ApiResponse, ``200``. With nothing migrated yet the service answers
120
+ ApiResponse, ``200``. With nothing migrated yet the service answers
120
121
  an empty object rather than a list, so do not assume a ``migrations``
121
122
  key is always present.
122
123
  """
ad_api/api/sb/stores.py CHANGED
@@ -34,15 +34,18 @@ class Stores(Client):
34
34
 
35
35
  The endpoint takes ``multipart/form-data`` with two parts, not JSON:
36
36
 
37
- ``assetInfo`` A JSON string with ``brandEntityId`` and ``mediaType``.
38
- ``asset`` The image bytes. PNG, JPEG or GIF, under 1MB and at
39
- least 400x400 pixels.
37
+ * ``assetInfo`` A JSON string with ``brandEntityId`` and ``mediaType``.
38
+ * ``asset`` The image bytes. PNG, JPEG or GIF, under 1MB and at
39
+ least 400x400 pixels.
40
40
 
41
41
  Keyword Args
42
- | path **image** (str or bytes): A file path, or the raw image bytes. [required]
43
- | path **brandEntityId** (string): The Brand entity identifier. Required for sellers, optional for vendors. [required]
44
- | path **mediaType** (string): Only ``brandLogo`` is supported. [optional]
45
- | path **filename** (string): Name sent in ``Content-Disposition``. Taken from the path when a path is given. [optional]
42
+
43
+ - ``image`` (str or bytes): A file path, or the raw image bytes. [required]
44
+ - ``brandEntityId`` (string): The Brand entity identifier. Required for
45
+ sellers, optional for vendors. [required]
46
+ - ``mediaType`` (string): Only ``brandLogo`` is supported. [optional]
47
+ - ``filename`` (string): Name sent in ``Content-Disposition``. Taken
48
+ from the path when a path is given. [optional]
46
49
 
47
50
  Returns:
48
51
  | ApiResponse
@@ -30,24 +30,21 @@ class CampaignNegativeTargets(Client):
30
30
  r"""
31
31
  Create campaign negative targets.
32
32
 
33
- Param:
33
+ Keyword Args
34
34
 
35
- | header **Prefer**\* (string). The "Prefer" header, as defined in [RFC7240], allows clients to request certain behavior from the service. The service ignores preference values that are either not supported or not known by the service. Either multiple Prefer headers are passed or single one with comma separated values, both forms are equivalent Supported preferences: return=representation - return the full object when doing create/update/delete operations instead of ids
35
+ - ``prefer`` (bool): send ``Prefer: return=representation`` so create and
36
+ update return the full object rather than only the ids. [optional]
36
37
 
37
38
  Request Body (required)
38
- | SponsoredProductsCreateSponsoredProductsCampaignNegativeTargetingClausesRequestContent {
39
- | **campaignNegativeTargetingClauses**\* SponsoredProductsCreateCampaignNegativeTargetingClause {
40
- | **expression**\* (array) The NegativeTargeting expression. minItems: 0 maxItems: 1000 [
41
- | SponsoredProductsCreateOrUpdateNegativeTargetingExpressionPredicate {
42
- | **type**\* (string) SponsoredProductsCreateOrUpdateNegativeTargetingExpressionPredicateType. The type of negative targeting expression. Enum: ['ASIN_BRAND_SAME_AS', 'ASIN_SAME_AS'].
43
- | **value** (string): The expression value
44
- | }
45
- | ]
46
- | **campaignId**\* (string) The identifier of the campaign to which this target is associated.
47
- | **state**\* (string) SponsoredProductsCreateOrUpdateEntityState. Entity state for create or update operation. Enum: [ ENABLED, PAUSED ]
48
- | }
49
- | }
50
- Request Body (optional)
39
+
40
+ - ``campaignNegativeTargetingClauses`` (array): the clauses to create.
41
+
42
+ Each clause carries:
43
+
44
+ - ``campaignId`` (string): the campaign the target belongs to.
45
+ - ``state`` (string): ``ENABLED`` or ``PAUSED``.
46
+ - ``expression`` (array): one predicate with ``type`` and ``value``.
47
+ ``type`` is ``ASIN_BRAND_SAME_AS`` or ``ASIN_SAME_AS``.
51
48
 
52
49
  Returns
53
50
  ApiResponse
@@ -65,24 +62,21 @@ class CampaignNegativeTargets(Client):
65
62
  r"""
66
63
  Update campaign negative targets.
67
64
 
68
- Param:
65
+ Keyword Args
69
66
 
70
- | header **Prefer**\* (string). The "Prefer" header, as defined in [RFC7240], allows clients to request certain behavior from the service. The service ignores preference values that are either not supported or not known by the service. Either multiple Prefer headers are passed or single one with comma separated values, both forms are equivalent Supported preferences: return=representation - return the full object when doing create/update/delete operations instead of ids
67
+ - ``prefer`` (bool): send ``Prefer: return=representation`` so create and
68
+ update return the full object rather than only the ids. [optional]
71
69
 
72
70
  Request Body (required)
73
- | SponsoredProductsUpdateSponsoredProductsCampaignNegativeTargetingClausesRequestContent {
74
- | **campaignNegativeTargetingClauses**\* SponsoredProductsUpdateCampaignNegativeTargetingClause {
75
- | **expression**\* (array) The NegativeTargeting expression. minItems: 0 maxItems: 1000 [
76
- | SponsoredProductsCreateOrUpdateNegativeTargetingExpressionPredicate {
77
- | **type**\* (string) SponsoredProductsCreateOrUpdateNegativeTargetingExpressionPredicateType. The type of negative targeting expression. Enum: ['ASIN_BRAND_SAME_AS', 'ASIN_SAME_AS'].
78
- | **value** (string): The expression value
79
- | }
80
- | ]
81
- | **targetId**\* (string) The target identifier
82
- | **state**\* (string) SponsoredProductsCreateOrUpdateEntityState. Entity state for create or update operation. Enum: [ ENABLED, PAUSED ]
83
- | }
84
- | }
85
- Request Body (optional)
71
+
72
+ - ``campaignNegativeTargetingClauses`` (array): the clauses to update.
73
+
74
+ Each clause carries:
75
+
76
+ - ``targetId`` (string): the target to update.
77
+ - ``state`` (string): ``ENABLED`` or ``PAUSED``.
78
+ - ``expression`` (array): one predicate with ``type`` and ``value``.
79
+ ``type`` is ``ASIN_BRAND_SAME_AS`` or ``ASIN_SAME_AS``.
86
80
 
87
81
  Returns
88
82
  ApiResponse
@@ -101,38 +95,23 @@ class CampaignNegativeTargets(Client):
101
95
  r"""
102
96
  List campaign negative targets.
103
97
 
104
- Request Body (required)
105
- | SponsoredProductsListSponsoredProductsCampaignNegativeTargetingClausesRequestContent {
106
- | **campaignIdFilter** SponsoredProductsReducedObjectIdFilter {
107
- | Filter entities by the list of objectIds
108
- | **include**\* (array) minItems: 0 maxItems: 100 [
109
- | string entity object identifier
110
- | ]
111
- | }
112
- | **campaignNegativeTargetIdFilter** SponsoredProductsObjectIdFilter {
113
- | Filter entities by the list of objectIds
114
- | **include**\* (array) minItems: 0 maxItems: 1000 [
115
- | string entity object identifier
116
- | ]
117
- | }
118
- | **stateFilter** SponsoredProductsEntityStateFilter {
119
- | Filter entities by state
120
- | **include**\* (array) minItems: 0 maxItems: 10 [
121
- | SponsoredProductsEntityState (string) The current resource state. Enum: [ ENABLED, PAUSED, ARCHIVED, ENABLING, USER_DELETED, OTHER ]
122
- | ]
123
- | }
124
- | **maxResults** integer($int32) Number of records to include in the paginated response. Defaults to max page size for given API
125
- | **nextToken** (string) token value allowing to navigate to the next response page
126
- | **asinFilter** SponsoredProductsAsinFilter {
127
- | **queryTermMatchType** SponsoredProductsQueryTermMatchType (string): Match type for query filters. Enum: [ BROAD_MATCH, EXACT_MATCH ]
128
- | **include** (array) maxItems: 100 [
129
- | string
130
- | ]
131
- | }
132
- | **includeExtendedDataFields** (boolean) Whether to get entity with extended data fields such as creationDate, lastUpdateDate, servingStatus
133
- | }
134
98
  Request Body (optional)
135
99
 
100
+ - ``campaignIdFilter`` (object): narrow to those campaigns. Carries
101
+ ``include``, a list of campaign ids.
102
+ - ``campaignNegativeTargetIdFilter`` (object): narrow to those targets.
103
+ Carries ``include``, a list of target ids.
104
+ - ``stateFilter`` (object): narrow by state. Carries ``include``, a list
105
+ drawn from ``ENABLED``, ``PAUSED``, ``ARCHIVED``, ``ENABLING``,
106
+ ``USER_DELETED`` and ``OTHER``.
107
+ - ``asinFilter`` (object): narrow by ASIN. Carries ``include``, a list of
108
+ ASINs, and ``queryTermMatchType``, either ``BROAD_MATCH`` or
109
+ ``EXACT_MATCH``.
110
+ - ``maxResults`` (integer): page size. Defaults to the API maximum.
111
+ - ``nextToken`` (string): pagination token.
112
+ - ``includeExtendedDataFields`` (boolean): also return ``creationDate``,
113
+ ``lastUpdateDate`` and ``servingStatus``.
114
+
136
115
  Returns
137
116
  ApiResponse
138
117
  """
@@ -95,10 +95,12 @@ class ProductAdsV3(Client):
95
95
  r"""
96
96
  Delete one or multiple sponsored product ads.
97
97
 
98
- Request Body (required) : a dictionary to filter with ad ids that should be deleted. Sets the state of a
99
- specified product ad to archived
100
- | **adIdFilter** ({})
101
- | include [string] : string list of ad object identifier.
98
+ Request Body (required): a dictionary to filter with ad ids that should
99
+ be deleted. Sets the state of a specified product ad to archived.
100
+
101
+ **adIdFilter** ({})
102
+
103
+ - ``include`` [string] : string list of ad object identifier.
102
104
 
103
105
  Returns
104
106
  | ApiResponse
ad_api/base/helpers.py CHANGED
@@ -1,3 +1,4 @@
1
+ import functools
1
2
  from io import BytesIO
2
3
  from typing import TypeVar
3
4
 
@@ -17,6 +18,7 @@ T = TypeVar("T")
17
18
 
18
19
  def sp_endpoint(path, method="GET"):
19
20
  def decorator(function: T) -> T:
21
+ @functools.wraps(function)
20
22
  def wrapper(*args, **kwargs):
21
23
  kwargs.update({"path": path, "method": method})
22
24
  return function(*args, **kwargs)
ad_api/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.1.8"
1
+ __version__ = "1.2.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-amazon-ad-api
3
- Version: 1.1.8
3
+ Version: 1.2.0
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
@@ -343,24 +343,35 @@ Warning: the campaign, ad group and product ad operations are deprecated in favo
343
343
  * [Ad Groups (deprecated)](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/ad_groups.html)
344
344
  * [Keywords](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/keywords.html)
345
345
  * [Negative Keywords](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/negative_keywords.html)
346
+ * [Keywords Recommendations](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/keywords_recommendations.html)
346
347
  * [Product Targeting](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/product_targeting.html)
347
348
  * [Negative Product Targeting](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/negative_product_targeting.html)
348
349
  * [Targeting Recommendations](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/targeting_recommendations.html)
349
350
  * [Bid Recommendations](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/bid_recommendations.html)
351
+ * [Benchmarks](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/benchmarks.html)
350
352
  * [Stores](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/stores.html)
351
353
  * [Landing Page Asins](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/landing_page_asins.html)
352
354
  * [Media](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/media.html)
353
355
  * [Brands](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/brands.html)
354
- * [Moderation](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/moderation.html)
355
- * [Reports](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/reports.html)
356
- * [Snapshots](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/snapshots.html)
357
356
  * [Themes](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/themes.html)
357
+ * [Reports](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/reports.html)
358
358
 
359
359
  ### [Modules Available Sponsored Brands 4.0](https://python-amazon-ad-api.readthedocs.io/en/latest/sb_v4.html)
360
360
 
361
+ > The 4.0 contract is fully covered: every operation is implemented except the campaign moderation route, which the service answers with a router `404`, and the report download, which resolves through the shared `_download` helper.
362
+
361
363
  * [Campaigns](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/campaigns_v4.html)
362
364
  * [Ad Groups](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/ad_groups_v4.html)
363
- * [Ads Groups](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/ads_v4.html)
365
+ * [Ads](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/ads_v4.html)
366
+ * [Ad Creatives](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/ad_creatives_v4.html)
367
+ * [Forecast](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/forecast.html)
368
+ * [Recommendations](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/recommendations.html)
369
+ * [Budget Rules](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/budget_rules.html)
370
+ * [Optimization Rules](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/optimization_rules.html)
371
+ * [Targeting Categories](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/targeting_categories.html)
372
+ * [Migration](https://python-amazon-ad-api.readthedocs.io/en/latest/sb/migration.html)
373
+
374
+ > Most 4.0 routes take a versioned media type and the service routes on it. With `application/json` they answer `404 Could not find resource`, which reads like a missing route but is only the wrong media type. This affects forecasts, budget recommendations, optimization rules, migrations, insights, negative brand recommendations and the collection creatives.
364
375
 
365
376
  ### [Modules Available Sponsored Display](https://python-amazon-ad-api.readthedocs.io/en/latest/sd.html)
366
377
 
@@ -1,10 +1,10 @@
1
1
  ad_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- ad_api/version.py,sha256=ii9AGvWXG_4qHN0FEZs45urJ5UrPQ9I83YjXUjFMvtI,22
2
+ ad_api/version.py,sha256=MpAT5hgNoHnTtG1XRD_GV_A7QrHVU6vJjGSw_8qMGA4,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
6
6
  ad_api/api/attribution.py,sha256=vHmXP0wDqhEqaS1q3tJyERxJ1JwntqoEb73LVXNHxR0,5121
7
- ad_api/api/audiences.py,sha256=db_bIFVAMpsRTEKb9G_kgxq01V--T5sMbOlgaKj1uPs,3631
7
+ ad_api/api/audiences.py,sha256=TQPt4avswFdCodNfQGDGxcJ2mY2LP2BfYvjxP6oJ0qY,3491
8
8
  ad_api/api/billing.py,sha256=84UhquQRAYGle7sGccP6mgsypLw_c_gJi3qe1uYLmYk,4364
9
9
  ad_api/api/brand_metrics.py,sha256=IlOlVJ2t6cL5DA49RaM3M1AW_3KFEyal08e0ZcnLdVE,6036
10
10
  ad_api/api/creative_assets.py,sha256=EzxrQbxMe5Y1b6qONJ3zi8cwoorCZAqSmHhiug6d87E,6671
@@ -27,8 +27,8 @@ ad_api/api/validation_configurations.py,sha256=V3o06uWGwvA_Ly1x2lAiCk35Wo7DC_k8A
27
27
  ad_api/api/sb/__init__.py,sha256=APbCAkWM1gzYuhpEUU98XDIKJKJx1NXALjLBXA9zdBU,1538
28
28
  ad_api/api/sb/ad_creatives_v4.py,sha256=zQzTivDkGzX3I5ZfCWIlzRUGWfTRsXJZCKQrKMaMDpc,14512
29
29
  ad_api/api/sb/ad_groups.py,sha256=W06Fk0CCsuEYen1Bd8obR6aHpOMhk6tGWNWApecw59c,2882
30
- ad_api/api/sb/ad_groups_v4.py,sha256=f6KpOrJ2RsCa4aznP8vdGbXp0HGsCmLOvC9yXX2pESc,3669
31
- ad_api/api/sb/ads_v4.py,sha256=s31OYVO6nyyKRgQAvMc4YtCcHhCo-Anx-r2kq22rPG8,11373
30
+ ad_api/api/sb/ad_groups_v4.py,sha256=KM5h2i-WuMnX3F271SRt96GhaVST4qDvPk1TfnKGyjw,3701
31
+ ad_api/api/sb/ads_v4.py,sha256=L0f2rCxUMPOVTFZ7jl43TQTkI7MOBdLZ7CGO-KxsXPQ,11501
32
32
  ad_api/api/sb/benchmarks.py,sha256=eeWv2rrRf4ttK-oI1EEEiui_rl_sxJk9yXcu6sDSfhg,3645
33
33
  ad_api/api/sb/bid_recommendations.py,sha256=ssO9XwYC9wK2GFaLtcsC-D3cZhDpCclcu1r01LTkZAw,2297
34
34
  ad_api/api/sb/brands.py,sha256=XIMDzV0tJoPiOcY0KoCKcyIwYLPMlJ-zkB2SeRVMF4Q,1376
@@ -40,14 +40,14 @@ ad_api/api/sb/keywords.py,sha256=P1dGqcLia349O0CwpBRURlIzgRc0cbFotkAGTSrErt4,763
40
40
  ad_api/api/sb/keywords_recommendations.py,sha256=oA4FRBwDtk52SZK0RgWvjNQ7K2GX0G2zSoisJGiEYDw,629
41
41
  ad_api/api/sb/landing_page_asins.py,sha256=j3qi2-KccuEzGLZrl6EfZBSikW2R4B4l7TixpkAnTq8,1259
42
42
  ad_api/api/sb/media.py,sha256=5LTeM4AHSDKw_58aTB2nEZhIYdWkztH0syBXaovS1rs,2529
43
- ad_api/api/sb/migration.py,sha256=2Pse2ixv73ZzqKhoCq6hAHzilAXwP8iphuIzTIOWIUE,7091
43
+ ad_api/api/sb/migration.py,sha256=QfbtB9yhRDn6OyS-DSypETAhhp_WDJbELRUoBsxc07U,7086
44
44
  ad_api/api/sb/negative_keywords.py,sha256=ww3IRbawidDHAaYIkX5SsH2OZKJj4UnCylqqFeq3OoY,6918
45
45
  ad_api/api/sb/negative_product_targeting.py,sha256=QbK1EhhzmnNOzGtbkrAZ4HS5OqiLU3nZBmsl1scd2D0,5085
46
46
  ad_api/api/sb/optimization_rules.py,sha256=aj9tZwKdaOzjnAN-8FHb49aiejNZKCCCcR8fjffH4k0,6802
47
47
  ad_api/api/sb/product_targeting.py,sha256=o6aB3hIh9jKvi_uTXFi--1hpnPFuXzQ-U9N7VUP_Bz4,5362
48
48
  ad_api/api/sb/recommendations.py,sha256=_21L8tZPuArmJ30XyR1SKQHQH_yswvF0IMqwD9sLhgY,347
49
49
  ad_api/api/sb/reports.py,sha256=icw5DpRrqfj0idEo0NN1GPDpIWQun2h_c2Uwc7CpNUA,3801
50
- ad_api/api/sb/stores.py,sha256=sLdA6Lp37VR-ldu_sTUZIqc8MbMzysPhNOh05VaKBcA,4371
50
+ ad_api/api/sb/stores.py,sha256=g0NbaYcd49JOJg95l4hiyCEreSu7inoWRdbEwT32KgQ,4335
51
51
  ad_api/api/sb/targeting_categories.py,sha256=QqOB2vTiS5c8u9qvbjRpeKJdGBkMWfgwWSoF3h-Eg4c,5114
52
52
  ad_api/api/sb/targeting_recommendations.py,sha256=_7NxD5kC-Od11QOuLT03qpLVxEOIZgy-BtzniWK4CI8,2862
53
53
  ad_api/api/sb/themes.py,sha256=rjxdGcllaqLOUMoTKKgBVSH5iKuxMdF0w-dHq0X3-yU,4618
@@ -76,14 +76,14 @@ ad_api/api/sp/budget_rules.py,sha256=ZtsCcJlRw-atzmI6HtzS0gj1D9MavnfJOY13wiNIcqM
76
76
  ad_api/api/sp/budget_rules_recommendations.py,sha256=MRRAWu3FICGrysMZy_JdNWCbr6E2X4_CsPZ3Fsru_qk,961
77
77
  ad_api/api/sp/campaign_consolidated_recommendations.py,sha256=AZS8A0ZH_GRCZ5uExqfaEN8xHhMNEbg6nSI6LkTsP8I,764
78
78
  ad_api/api/sp/campaign_negative_keywords_v3.py,sha256=3y5PHA_r6GtBAFbAXiGH5q6ByWsG2alA3DCqdRiaO3w,6592
79
- ad_api/api/sp/campaign_negative_targets.py,sha256=DqPZozdx8ZtG7FoC6uNWfiHy-Lq0xwDp1sNfgBVeQMs,8318
79
+ ad_api/api/sp/campaign_negative_targets.py,sha256=DTnPtGNie-CJutUYXp3Iu81cTtu4VsvknPaEDvxKJyA,5352
80
80
  ad_api/api/sp/campaigns_budget_usage.py,sha256=njn-Wd3xvbJbL5HMSNQK4RyxCgAflqUgVFo7XhlXmB8,862
81
81
  ad_api/api/sp/campaigns_v3.py,sha256=hT8vVmsvOxllgi9f069q4ha_Dy9Dfm12l2x0vXFvke4,7897
82
82
  ad_api/api/sp/campaings_optimization.py,sha256=CrH9x-KNTsRc56tn_TCDxDTZIF9pYdqDT48LTepys2w,6673
83
83
  ad_api/api/sp/keywords_v3.py,sha256=tvpNY0rzCeLVNGLdN2NNa8Y9DyAH9D3GQUnaEieYpXE,3850
84
84
  ad_api/api/sp/negative_keywords_v3.py,sha256=EwCTmQZTUvzaXSdbhOvM4WFJTpl6BsbeJ8DyOQ18r_Y,3914
85
85
  ad_api/api/sp/negative_product_targeting_v3.py,sha256=aAVwLialz5qxO1FfYwA1kJ8I6A8wB14-GBHB-i2tOEQ,6647
86
- ad_api/api/sp/product_ads_v3.py,sha256=uYZlMxz2ng8pAn8-eL3D75lnVFuccoMUtN5sFCEboOI,5975
86
+ ad_api/api/sp/product_ads_v3.py,sha256=Yi_5eUD-vlr87EYat_YVN9v7al9J--fJsr_c0QIZ6pA,5967
87
87
  ad_api/api/sp/product_recommendations.py,sha256=vXoZIRqcFc5bo9MUprArKndxcEYe_PuySUnw634Ed4U,499
88
88
  ad_api/api/sp/product_targeting_v3.py,sha256=vk_T0piHzP5uwt8HSHm5hFKP_0sXJD8nbyooPtM-BTs,9567
89
89
  ad_api/api/sp/ranked_keywords_recommendations.py,sha256=hVB3-pF0RDgX4ZeeblFk0F_pnRxM3JmulNGdIiKSzI0,13092
@@ -105,11 +105,11 @@ ad_api/base/client.py,sha256=rOTH5zd513qmeNiJbwT42kEXvZseeh03UUp-krBW_W4,10322
105
105
  ad_api/base/config.py,sha256=VbykwPyR_CDIMFCZQs_GSqc5qKcYpp0l6B9luV-abu4,606
106
106
  ad_api/base/credential_provider.py,sha256=upgcgm2GGb0AkzDlKVAtKtbirqZAFp3EM6DkBzvAXsI,5566
107
107
  ad_api/base/exceptions.py,sha256=9D3M40ZIlLS0fA-aQh1BTWPOW-Nvf0tRhbA85jFnDJ4,4383
108
- ad_api/base/helpers.py,sha256=naUkDLK466x_OBCPXxMlzRc2nPC6iQ6H_vyUji0MJJ0,2282
108
+ ad_api/base/helpers.py,sha256=UK7Q13vZ0mNdF54xzfzoGDn2O_cd2yPrK2X4rOzC41c,2334
109
109
  ad_api/base/marketplaces.py,sha256=44lvCcluXNpqTprWQ80e3weSQmQbJoWL-WDSOWVbCyQ,4657
110
110
  ad_api/base/utils.py,sha256=_qnCBOvyJTLgaZjJzUWTi38GGLHkQszXELs79133Rb4,5618
111
- python_amazon_ad_api-1.1.8.dist-info/licenses/LICENSE,sha256=h2rpqlmmLy-4l1tN6KpWAFxx1JEMYeEFrMrZUbx_B_o,1105
112
- python_amazon_ad_api-1.1.8.dist-info/METADATA,sha256=-W9EOI2Z4NSB1KGtu1av3VB63ZLe98HiPOAKAgEHg5o,20486
113
- python_amazon_ad_api-1.1.8.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
114
- python_amazon_ad_api-1.1.8.dist-info/top_level.txt,sha256=nN9twUos-8pkP514ZwpvRU9YL9L2XyQyHsMQFfudGTU,7
115
- python_amazon_ad_api-1.1.8.dist-info/RECORD,,
111
+ python_amazon_ad_api-1.2.0.dist-info/licenses/LICENSE,sha256=h2rpqlmmLy-4l1tN6KpWAFxx1JEMYeEFrMrZUbx_B_o,1105
112
+ python_amazon_ad_api-1.2.0.dist-info/METADATA,sha256=CnTHBEa7ivhSIPvXS8ipa-__25esQpOpIfRntU7w6y8,21778
113
+ python_amazon_ad_api-1.2.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
114
+ python_amazon_ad_api-1.2.0.dist-info/top_level.txt,sha256=nN9twUos-8pkP514ZwpvRU9YL9L2XyQyHsMQFfudGTU,7
115
+ python_amazon_ad_api-1.2.0.dist-info/RECORD,,