python-amazon-ad-api 1.5.9__tar.gz → 1.5.11__tar.gz
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.
- {python_amazon_ad_api-1.5.9/python_amazon_ad_api.egg-info → python_amazon_ad_api-1.5.11}/PKG-INFO +1 -1
- python_amazon_ad_api-1.5.11/ad_api/api/sb/media.py +82 -0
- python_amazon_ad_api-1.5.11/ad_api/api/sb/recommendations.py +35 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/budget_rules.py +6 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/snapshots.py +31 -4
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/budget_rules.py +6 -0
- python_amazon_ad_api-1.5.11/ad_api/api/stores.py +53 -0
- python_amazon_ad_api-1.5.11/ad_api/version.py +1 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11/python_amazon_ad_api.egg-info}/PKG-INFO +1 -1
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/setup.cfg +1 -1
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/setup.py +1 -1
- python_amazon_ad_api-1.5.9/ad_api/api/sb/media.py +0 -55
- python_amazon_ad_api-1.5.9/ad_api/api/sb/recommendations.py +0 -7
- python_amazon_ad_api-1.5.9/ad_api/api/stores.py +0 -35
- python_amazon_ad_api-1.5.9/ad_api/version.py +0 -1
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/LICENSE +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/README.md +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/__init__.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/__init__.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/account.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/account_budgets.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/advertising_test_account.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/attribution.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/audiences.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/billing.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/brand_metrics.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/creative_assets.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/eligibility.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/exports.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/history.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/insights.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/invoices.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/localization.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/manager_accounts.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/metadata.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/portfolios.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/portfolios_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/profiles.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/reports.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/__init__.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/ad_creatives_v4.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/ad_groups.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/ad_groups_v4.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/ads_v4.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/benchmarks.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/bid_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/brands.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/budget_rules.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/campaigns.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/campaigns_v4.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/forecast.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/keywords.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/keywords_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/landing_page_asins.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/migration.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/negative_keywords.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/negative_product_targeting.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/optimization_rules.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/product_targeting.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/reports.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/stores.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/targeting_categories.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/targeting_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/themes.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/__init__.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/ad_groups.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/bid_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/brand_safety.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/campaigns.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/campaigns_budget_usage.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/creatives.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/forecast.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/negative_product_targeting.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/product_ads.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/product_targeting.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/reports.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/targeting_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/__init__.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/ad_groups_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/bid_recommendations_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/budget_initial_recommendation.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/budget_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/budget_rules_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/campaign_consolidated_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/campaign_negative_keywords_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/campaign_negative_targets.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/campaigns_budget_usage.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/campaigns_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/campaings_optimization.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/keywords_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/negative_keywords_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/negative_product_targeting_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/product_ads_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/product_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/product_targeting_v3.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/ranked_keywords_recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/schedule_based_bid_optimization.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/stream.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/__init__.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/ad_associations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/ad_extensions.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/ad_groups.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/ads.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/advertiser_accounts.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/brand_store_edition_publish_versions.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/brand_store_editions.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/brand_store_pages.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/brand_stores.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/campaigns.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/geo_locations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/label_object_associations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/labels.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/manager_accounts.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/recommendation_types.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/recommendations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/reports.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/selling_accounts.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/targets.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/validation_configurations.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/auth/__init__.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/auth/access_token_client.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/auth/access_token_response.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/auth/credentials.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/auth/exceptions.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/__init__.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/api_response.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/base_client.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/client.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/config.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/credential_provider.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/exceptions.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/helpers.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/marketplaces.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/utils.py +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/pyproject.toml +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/python_amazon_ad_api.egg-info/SOURCES.txt +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/python_amazon_ad_api.egg-info/dependency_links.txt +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/python_amazon_ad_api.egg-info/requires.txt +0 -0
- {python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/python_amazon_ad_api.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Media(Client):
|
|
5
|
+
"""
|
|
6
|
+
Poll the status of media already uploaded for Sponsored Brands.
|
|
7
|
+
|
|
8
|
+
The v3 contract carries a single operation on this resource, GET
|
|
9
|
+
/media/describe, which answers the state of a media id. A creative can be
|
|
10
|
+
attached to a campaign once its media reaches PendingDeepValidation, but it
|
|
11
|
+
may still fail validation afterwards and move to Failed, so a campaign can
|
|
12
|
+
be rejected later. Only Available means the media finished processing and
|
|
13
|
+
is published for use.
|
|
14
|
+
|
|
15
|
+
/media/upload and /media/complete sit outside that contract. Probing
|
|
16
|
+
/media/upload answers 403 IncompleteSignatureException before the router
|
|
17
|
+
sees it, which suggests it expects an AWS SigV4 signature rather than the
|
|
18
|
+
bearer token this client sends. /media/complete answers 500 with a
|
|
19
|
+
NullPointerException on an empty body, so the route exists but its expected
|
|
20
|
+
fields are unknown. Neither is verified.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
@sp_endpoint('/media/upload', method='POST')
|
|
24
|
+
def create_media(self, **kwargs) -> ApiResponse:
|
|
25
|
+
"""
|
|
26
|
+
Creates an ephemeral resource (upload location) to upload Media for an Ad Program (SponsoredBrands).
|
|
27
|
+
|
|
28
|
+
The upload location is short lived and expires in 15 minutes. Once the upload is complete, /media/complete API should be used to notify that the upload is complete.
|
|
29
|
+
|
|
30
|
+
The upload location only supports PUT HTTP Method to upload the media content. If the upload location expires, API user will get 403 Forbidden response.
|
|
31
|
+
|
|
32
|
+
Request body
|
|
33
|
+
| **programType** (string): [required] [ SponsoredBrands ].
|
|
34
|
+
| **creativeType** (string): [required] [ Video ].
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
| ApiResponse
|
|
38
|
+
|
|
39
|
+
"""
|
|
40
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
41
|
+
|
|
42
|
+
@sp_endpoint('/media/complete', method='PUT')
|
|
43
|
+
def complete_media(self, **kwargs) -> ApiResponse:
|
|
44
|
+
"""
|
|
45
|
+
Notifies the service that an upload started by create_media finished.
|
|
46
|
+
|
|
47
|
+
The upload location returned by create_media expires in 15 minutes, and
|
|
48
|
+
this call closes the loop after the PUT to that location succeeds.
|
|
49
|
+
|
|
50
|
+
The route answers 500 with a NullPointerException when the body is
|
|
51
|
+
empty, so the body is required but its fields are not documented in any
|
|
52
|
+
contract this package tracks. Pass a body as the registered example
|
|
53
|
+
does and inspect the error if the service refuses it.
|
|
54
|
+
|
|
55
|
+
Keyword Args
|
|
56
|
+
| body **body** (string | dict): the completion payload. [required]
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
| ApiResponse
|
|
60
|
+
|
|
61
|
+
"""
|
|
62
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
63
|
+
|
|
64
|
+
@sp_endpoint('/media/describe', method='GET')
|
|
65
|
+
def describe_media(self, mediaId, **kwargs) -> ApiResponse:
|
|
66
|
+
"""
|
|
67
|
+
Describes an uploaded media resource.
|
|
68
|
+
|
|
69
|
+
The media id goes in the query string, as the contract requires. The
|
|
70
|
+
answer carries a status of PendingDeepValidation, Available or Failed,
|
|
71
|
+
and 404 means the id is unknown. A media id that does not exist answers
|
|
72
|
+
400 InvalidMediaId, which means the route is live.
|
|
73
|
+
|
|
74
|
+
Keyword Args
|
|
75
|
+
| query **mediaId** (string): The media identifier. [required]
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
| ApiResponse
|
|
79
|
+
|
|
80
|
+
Documentation: https://advertising.amazon.com/API/docs/en-us/sponsored-brands/3-0/openapi#tag/Media
|
|
81
|
+
"""
|
|
82
|
+
return self._request(kwargs.pop('path'), params={'mediaId': mediaId, **kwargs})
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Recommendations(Client):
|
|
5
|
+
"""
|
|
6
|
+
Ask for headline suggestions to use in a Sponsored Brands creative.
|
|
7
|
+
|
|
8
|
+
The resource has a single operation, POST with a HeadlineSuggestionRequest,
|
|
9
|
+
and it exists only in the 4.0 contract: the 3.0 contract does not carry the
|
|
10
|
+
route. The call suggests headlines; it neither creates nor changes a
|
|
11
|
+
creative, so it is safe to run while a campaign is live.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
@sp_endpoint('/sb/recommendations/creative/headline', method='POST')
|
|
15
|
+
def list_recommendations(self, **kwargs) -> ApiResponse:
|
|
16
|
+
"""
|
|
17
|
+
Returns suggested headlines for the products or store pages given.
|
|
18
|
+
|
|
19
|
+
The request names what the headlines are for, either by ASIN or by store
|
|
20
|
+
page, and caps how many suggestions come back. An answer of 422 means
|
|
21
|
+
the parameters were understood but rejected, which is what an empty or
|
|
22
|
+
contradictory request produces.
|
|
23
|
+
|
|
24
|
+
Request body (HeadlineSuggestionRequest)
|
|
25
|
+
| **asins** (array): the products the headlines are for.
|
|
26
|
+
| **storePages** (array): the store pages the headlines are for.
|
|
27
|
+
| **maxNumSuggestions** (number): how many suggestions to return.
|
|
28
|
+
| **adFormat** (string): the format the headlines are written for.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
| ApiResponse
|
|
32
|
+
|
|
33
|
+
Documentation: https://advertising.amazon.com/API/docs/en-us/sponsored-brands/4-0/openapi
|
|
34
|
+
"""
|
|
35
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
@@ -210,6 +210,12 @@ class BudgetRules(Client):
|
|
|
210
210
|
r"""
|
|
211
211
|
Gets the budget history for a campaign specified by identifier.
|
|
212
212
|
|
|
213
|
+
This route is not declared by the 3.0 contract this package tracks. A
|
|
214
|
+
probe against it answers 403 IncompleteSignatureException before the
|
|
215
|
+
service looks at the bearer token, so the route sits behind a gateway
|
|
216
|
+
that expects an AWS SigV4 signature. It exists, but this client cannot
|
|
217
|
+
call it as it stands.
|
|
218
|
+
|
|
213
219
|
Param:
|
|
214
220
|
| path **campaignId**\* (number). The campaign identifier.
|
|
215
221
|
| query **nextToken** (string). To retrieve the next page of results, call the same operation and specify this token in the request. If the nextToken field is empty, there are no further results.
|
|
@@ -3,15 +3,35 @@ from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Uti
|
|
|
3
3
|
|
|
4
4
|
class Snapshots(Client):
|
|
5
5
|
"""
|
|
6
|
-
|
|
6
|
+
Request and read Sponsored Display snapshots.
|
|
7
|
+
|
|
8
|
+
A snapshot is an asynchronous record of what the account held at a moment:
|
|
9
|
+
the POST asks for one and answers 202 with no body, and the GET polls by
|
|
10
|
+
snapshot id until the record is ready. Both routes are marked deprecated in
|
|
11
|
+
the 3.0 contract, so they may stop answering; they are kept because the
|
|
12
|
+
account still uses them.
|
|
13
|
+
|
|
14
|
+
The contract also carries GET /sd/snapshots/{snapshotId}/download, which
|
|
15
|
+
answers 307 and redirects to the file. It is not wrapped here: a direct
|
|
16
|
+
download of the location returned by get_snapshot answers 401 unless the
|
|
17
|
+
client sends its own headers, which download_snapshot below already does.
|
|
7
18
|
"""
|
|
8
19
|
|
|
9
20
|
@sp_endpoint('/sd/{}/snapshot', method='POST')
|
|
10
21
|
def post_snapshot(self, recordType, **kwargs) -> ApiResponse:
|
|
11
22
|
"""
|
|
23
|
+
Requests a snapshot of one record type.
|
|
24
|
+
|
|
25
|
+
The contract answers 202 with an empty body and no snapshot id, so the
|
|
26
|
+
id has to be read from the account afterwards. Marked deprecated in the
|
|
27
|
+
3.0 contract.
|
|
28
|
+
|
|
29
|
+
Keyword Args
|
|
30
|
+
| path **recordType** (string): the record the snapshot covers. [required]
|
|
12
31
|
|
|
13
32
|
Returns:
|
|
14
|
-
ApiResponse
|
|
33
|
+
| ApiResponse
|
|
34
|
+
|
|
15
35
|
"""
|
|
16
36
|
return self._request(fill_query_params(kwargs.pop('path'), recordType), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
17
37
|
|
|
@@ -20,8 +40,15 @@ class Snapshots(Client):
|
|
|
20
40
|
r"""
|
|
21
41
|
Gets the status of a requested snapshot.
|
|
22
42
|
|
|
43
|
+
Answers 202 while the record is still being built. Once it is ready the
|
|
44
|
+
location field points at the file, and passing that location to
|
|
45
|
+
download_snapshot saves it. Marked deprecated in the 3.0 contract.
|
|
46
|
+
|
|
47
|
+
Keyword Args
|
|
48
|
+
| path **snapshotId** (string): the identifier of the snapshot. [required]
|
|
49
|
+
|
|
23
50
|
Returns:
|
|
24
|
-
ApiResponse
|
|
51
|
+
| ApiResponse
|
|
25
52
|
"""
|
|
26
53
|
return self._request(fill_query_params(kwargs.pop('path'), snapshotId), params=kwargs)
|
|
27
54
|
|
|
@@ -34,7 +61,7 @@ class Snapshots(Client):
|
|
|
34
61
|
kwarg parameter **format** if not provided a format will return a url to download the snapshot (this url has a expiration time)
|
|
35
62
|
|
|
36
63
|
Keyword Args
|
|
37
|
-
| **url** (string):
|
|
64
|
+
| **url** (string): the location obtained from get_snapshot [required]
|
|
38
65
|
| **file** (string): The path to save the file if mode is download json, zip or gzip. [optional]
|
|
39
66
|
| **format** (string): The mode to download the snapshot: data (list), raw, url, json, zip, gzip. Default (url) [optional]
|
|
40
67
|
|
|
@@ -210,6 +210,12 @@ class BudgetRules(Client):
|
|
|
210
210
|
r"""
|
|
211
211
|
Gets the budget history for a campaign specified by identifier.
|
|
212
212
|
|
|
213
|
+
This route is not declared by the 3.0 contract this package tracks. A
|
|
214
|
+
probe against it answers 403 IncompleteSignatureException before the
|
|
215
|
+
service looks at the bearer token, so the route sits behind a gateway
|
|
216
|
+
that expects an AWS SigV4 signature. It exists, but this client cannot
|
|
217
|
+
call it as it stands.
|
|
218
|
+
|
|
213
219
|
Param:
|
|
214
220
|
| path **campaignId**\* (number). The campaign identifier.
|
|
215
221
|
| query **nextToken** (string). To retrieve the next page of results, call the same operation and specify this token in the request. If the nextToken field is empty, there are no further results.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Stores(Client):
|
|
5
|
+
"""
|
|
6
|
+
Read engagement and insight metrics for a Brand Store.
|
|
7
|
+
|
|
8
|
+
Both routes are keyed by the brand entity id and both answer a versioned
|
|
9
|
+
media type: the client asks for v1 by default and the service picks the
|
|
10
|
+
shape of the answer from it. The 3.0 contract declares both as POST, which
|
|
11
|
+
is why they carry a body even though they only read.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
@sp_endpoint('/stores/{}/asinMetrics', method='POST')
|
|
15
|
+
def get_asin_engagement_for_store(self, brandEntityId, version: int = 1, **kwargs) -> ApiResponse:
|
|
16
|
+
r"""
|
|
17
|
+
Engagement figures for the ASINs of a store.
|
|
18
|
+
|
|
19
|
+
Keyword Args
|
|
20
|
+
| path **brandEntityId** (string): the brand entity id of the store. [required]
|
|
21
|
+
| **version** (int): the media type version asked for. Defaults to 1.
|
|
22
|
+
| body **body** (string | dict): the ASIN list to measure. [required]
|
|
23
|
+
|
|
24
|
+
Returns:
|
|
25
|
+
| ApiResponse
|
|
26
|
+
"""
|
|
27
|
+
content_type = 'application/vnd.GetAsinEngagementForStoreRequest.v'+ str(version) +'+json'
|
|
28
|
+
accept = 'application/vnd.GetAsinEngagementForStoreResponse.v'+ str(version) +'+json'
|
|
29
|
+
headers = {'Content-Type': content_type, 'Accept': accept}
|
|
30
|
+
return self._request(fill_query_params(kwargs.pop('path'), brandEntityId), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
31
|
+
|
|
32
|
+
@sp_endpoint('/stores/{}/insights', method='POST')
|
|
33
|
+
def get_insights_for_store_api(self, brandEntityId, version: int = 1, **kwargs) -> ApiResponse:
|
|
34
|
+
r"""
|
|
35
|
+
Insight metrics for a store, over the period named in the body.
|
|
36
|
+
|
|
37
|
+
The contract declares this route as POST, so a body is expected even
|
|
38
|
+
though the call only reads. An earlier version of this method sent the
|
|
39
|
+
same body on a GET.
|
|
40
|
+
|
|
41
|
+
Keyword Args
|
|
42
|
+
| path **brandEntityId** (string): the brand entity id of the store. [required]
|
|
43
|
+
| **version** (int): the media type version asked for. Defaults to 1.
|
|
44
|
+
| body **body** (string | dict): the period and grouping to report. [required]
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
| ApiResponse
|
|
48
|
+
|
|
49
|
+
Documentation: https://advertising.amazon.com/API/docs/en-us/stores
|
|
50
|
+
"""
|
|
51
|
+
content_type = 'application/vnd.GetInsightsForStoreRequest.v'+ str(version) +'+json'
|
|
52
|
+
headers = {'Content-Type': content_type}
|
|
53
|
+
return self._request(fill_query_params(kwargs.pop('path'), brandEntityId), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.5.11"
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class Media(Client):
|
|
5
|
-
"""
|
|
6
|
-
Use this interface to request and retrieve store information. This can be used for Sponsored Brands campaign creation, to pull the store URL information, and for asset registration for Stores.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
# NOTE: /media/upload and /media/complete are NOT in the v3 contract.
|
|
10
|
-
# Probing /media/upload answers 403 IncompleteSignatureException before the
|
|
11
|
-
# router sees it, which suggests the route expects an AWS SigV4 signature
|
|
12
|
-
# rather than the bearer token this client sends. Not verified either way.
|
|
13
|
-
# /media/complete answers 500 with a NullPointerException on an empty body,
|
|
14
|
-
# so the route exists but its expected fields are unknown.
|
|
15
|
-
|
|
16
|
-
@sp_endpoint('/media/upload', method='POST')
|
|
17
|
-
def create_media(self, **kwargs) -> ApiResponse:
|
|
18
|
-
"""
|
|
19
|
-
Creates an ephemeral resource (upload location) to upload Media for an Ad Program (SponsoredBrands).
|
|
20
|
-
|
|
21
|
-
The upload location is short lived and expires in 15 minutes. Once the upload is complete, /media/complete API should be used to notify that the upload is complete.
|
|
22
|
-
|
|
23
|
-
The upload location only supports PUT HTTP Method to upload the media content. If the upload location expires, API user will get 403 Forbidden response.
|
|
24
|
-
|
|
25
|
-
Request body
|
|
26
|
-
| **programType** (string): [required] [ SponsoredBrands ].
|
|
27
|
-
| **creativeType** (string): [required] [ Video ].
|
|
28
|
-
|
|
29
|
-
Returns:
|
|
30
|
-
| ApiResponse
|
|
31
|
-
|
|
32
|
-
"""
|
|
33
|
-
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
34
|
-
|
|
35
|
-
@sp_endpoint('/media/complete', method='PUT')
|
|
36
|
-
def complete_media(self, **kwargs) -> ApiResponse:
|
|
37
|
-
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
38
|
-
|
|
39
|
-
@sp_endpoint('/media/describe', method='GET')
|
|
40
|
-
def describe_media(self, mediaId, **kwargs) -> ApiResponse:
|
|
41
|
-
"""
|
|
42
|
-
Describes an uploaded media resource.
|
|
43
|
-
|
|
44
|
-
The media id goes in the query string. Answered ``400 InvalidMediaId``
|
|
45
|
-
for an id that does not exist, which means the route is live.
|
|
46
|
-
|
|
47
|
-
Keyword Args
|
|
48
|
-
| path **mediaId** (string): The media identifier. [required]
|
|
49
|
-
|
|
50
|
-
Returns:
|
|
51
|
-
| ApiResponse
|
|
52
|
-
|
|
53
|
-
Documentation: https://advertising.amazon.com/API/docs/en-us/sponsored-brands/3-0/openapi
|
|
54
|
-
"""
|
|
55
|
-
return self._request(kwargs.pop('path'), params={'mediaId': mediaId, **kwargs})
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class Recommendations(Client):
|
|
5
|
-
@sp_endpoint('/sb/recommendations/creative/headline', method='POST')
|
|
6
|
-
def list_recommendations(self, **kwargs) -> ApiResponse:
|
|
7
|
-
return self._request(kwargs.pop('path'), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
from ad_api.base import Client, sp_endpoint, fill_query_params, ApiResponse, Utils
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class Stores(Client):
|
|
5
|
-
"""
|
|
6
|
-
Brand Metrics provides a new measurement solution that quantifies opportunities for your brand at each stage of the customer journey on Amazon, and helps brands understand the value of different shopping engagements that impact stages of that journey. You can now access Awareness and Consideration indices that compare your performance to peers using models predictive of consideration and sales. Brand Metrics quantifies the number of customers in the awareness and consideration marketing funnel stages and is built at scale to measure all shopping engagements with your brand on Amazon, not just ad-attributed engagements. Additionally, BM breaks out key shopping engagements at each stage of the shopping journey, along with the Return on Engagement, so you can measure the historical sales following a consideration event or purchase.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
@sp_endpoint('/stores/{}/asinMetrics', method='POST')
|
|
10
|
-
def get_asin_engagement_for_store(self, brandEntityId, version: int = 1, **kwargs) -> ApiResponse:
|
|
11
|
-
r"""
|
|
12
|
-
getAsinEngagementForStore
|
|
13
|
-
"""
|
|
14
|
-
content_type = 'application/vnd.GetAsinEngagementForStoreRequest.v'+ str(version) +'+json'
|
|
15
|
-
accept = 'application/vnd.GetAsinEngagementForStoreResponse.v'+ str(version) +'+json'
|
|
16
|
-
headers = {'Content-Type': content_type, 'Accept': accept}
|
|
17
|
-
return self._request(fill_query_params(kwargs.pop('path'), brandEntityId), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
18
|
-
|
|
19
|
-
@sp_endpoint('/stores/{}/insights', method='GET')
|
|
20
|
-
def get_insights_for_store_api(self, brandEntityId, version: int = 1, **kwargs) -> ApiResponse:
|
|
21
|
-
r"""
|
|
22
|
-
getInsightsForStoreAPI
|
|
23
|
-
"""
|
|
24
|
-
content_type = 'application/vnd.GetInsightsForStoreRequest.v'+ str(version) +'+json'
|
|
25
|
-
# accept = 'application/vnd.GetInsightsForStoreResponse.v'+ str(version) +'+json'
|
|
26
|
-
headers = {
|
|
27
|
-
'Content-Type': content_type,
|
|
28
|
-
# 'Accept': accept,
|
|
29
|
-
}
|
|
30
|
-
# return self._request(fill_query_params(kwargs.pop('path'), brandEntityId),
|
|
31
|
-
# data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs)
|
|
32
|
-
return self._request(fill_query_params(kwargs.pop('path'), brandEntityId), data=Utils.convert_body(kwargs.pop('body'), False), params=kwargs, headers=headers)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.5.9"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/advertising_test_account.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/bid_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/keywords_recommendations.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/landing_page_asins.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/negative_keywords.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/optimization_rules.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/product_targeting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sb/targeting_categories.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/bid_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/campaigns_budget_usage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sd/product_targeting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/bid_recommendations_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/budget_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/campaigns_budget_usage.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/campaings_optimization.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/negative_keywords_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/product_recommendations.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/sp/product_targeting_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/advertiser_accounts.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/brand_store_editions.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/brand_store_pages.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/manager_accounts.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/recommendation_types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/v1/selling_accounts.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/api/validation_configurations.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/auth/access_token_client.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/auth/access_token_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/ad_api/base/credential_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.5.9 → python_amazon_ad_api-1.5.11}/python_amazon_ad_api.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|