python-amazon-ad-api 1.1.5__tar.gz → 1.1.6__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.1.5 → python_amazon_ad_api-1.1.6}/PKG-INFO +1 -1
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/__init__.py +2 -0
- python_amazon_ad_api-1.1.6/ad_api/api/sb/migration.py +154 -0
- python_amazon_ad_api-1.1.6/ad_api/version.py +1 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/python_amazon_ad_api.egg-info/PKG-INFO +1 -1
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/python_amazon_ad_api.egg-info/SOURCES.txt +1 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/setup.cfg +1 -1
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/setup.py +1 -1
- python_amazon_ad_api-1.1.5/ad_api/version.py +0 -1
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/LICENSE +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/README.md +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/__init__.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/__init__.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/account.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/advertising_test_account.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/attribution.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/audiences.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/billing.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/brand_metrics.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/creative_assets.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/eligibility.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/exports.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/history.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/insights.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/invoices.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/localization.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/manager_accounts.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/metadata.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/portfolios.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/portfolios_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/profiles.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/reports.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/ad_creatives_v4.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/ad_groups.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/ad_groups_v4.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/ads_v4.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/benchmarks.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/bid_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/brands.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/budget_rules.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/campaigns.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/campaigns_v4.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/forecast.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/keywords.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/keywords_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/landing_page_asins.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/media.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/negative_keywords.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/negative_product_targeting.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/optimization_rules.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/product_targeting.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/reports.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/stores.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/targeting_categories.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/targeting_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/themes.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/__init__.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/ad_groups.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/bid_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/brand_safety.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/budget_rules.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/campaigns.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/campaigns_budget_usage.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/creatives.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/forecast.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/negative_product_targeting.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/product_ads.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/product_targeting.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/reports.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/snapshots.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/targeting_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/__init__.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/ad_groups_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/bid_recommendations_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/budget_initial_recommendation.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/budget_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/budget_rules.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/budget_rules_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/campaign_consolidated_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/campaign_negative_keywords_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/campaign_negative_targets.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/campaigns_budget_usage.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/campaigns_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/campaings_optimization.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/keywords_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/negative_keywords_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/negative_product_targeting_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/product_ads_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/product_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/product_targeting_v3.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/ranked_keywords_recommendations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/schedule_based_bid_optimization.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/stores.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/stream.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/v1/__init__.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/v1/ad_groups.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/v1/ads.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/v1/campaigns.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/v1/targets.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/validation_configurations.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/auth/__init__.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/auth/access_token_client.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/auth/access_token_response.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/auth/credentials.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/auth/exceptions.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/__init__.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/api_response.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/base_client.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/client.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/config.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/credential_provider.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/exceptions.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/helpers.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/marketplaces.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/base/utils.py +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/pyproject.toml +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/python_amazon_ad_api.egg-info/dependency_links.txt +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/python_amazon_ad_api.egg-info/requires.txt +0 -0
- {python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/python_amazon_ad_api.egg-info/top_level.txt +0 -0
|
@@ -23,6 +23,7 @@ from .themes import Themes
|
|
|
23
23
|
from .budget_rules import BudgetRules
|
|
24
24
|
from .optimization_rules import OptimizationRules
|
|
25
25
|
from .targeting_categories import TargetingCategories
|
|
26
|
+
from .migration import Migration
|
|
26
27
|
|
|
27
28
|
__all__ = [
|
|
28
29
|
"Brands",
|
|
@@ -50,4 +51,5 @@ __all__ = [
|
|
|
50
51
|
"BudgetRules",
|
|
51
52
|
"OptimizationRules",
|
|
52
53
|
"TargetingCategories",
|
|
54
|
+
"Migration",
|
|
53
55
|
]
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
from ad_api.base import Client, sp_endpoint, ApiResponse, Utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Migration(Client):
|
|
5
|
+
"""Sponsored Brands legacy campaign migration from 3.0 to 4.0.
|
|
6
|
+
|
|
7
|
+
Documentation: https://advertising.amazon.com/API/docs/en-us/sponsored-brands/4-0/openapi
|
|
8
|
+
|
|
9
|
+
Two media types live in this family, both versioned and both required:
|
|
10
|
+
|
|
11
|
+
======================================== ==========================================================
|
|
12
|
+
Route Media type
|
|
13
|
+
======================================== ==========================================================
|
|
14
|
+
``/sb/v4/legacyCampaigns/*`` ``vnd.SponsoredBrands.SponsoredBrandsMigrationApi.v4``
|
|
15
|
+
``/sb/v4/migrations/list`` ``vnd.sbAdMigration.v4``
|
|
16
|
+
======================================== ==========================================================
|
|
17
|
+
|
|
18
|
+
.. warning::
|
|
19
|
+
``list_migrations`` answers ``404 Could not find resource`` when sent
|
|
20
|
+
``application/json``, the same behaviour already recorded for forecasts,
|
|
21
|
+
budget recommendations and optimization rules. Amazon routes on media
|
|
22
|
+
type; a wrong one reads exactly like a missing route.
|
|
23
|
+
|
|
24
|
+
.. note::
|
|
25
|
+
``migration_job_status`` and ``migration_job_results`` answer ``500
|
|
26
|
+
INTERNAL_ERROR`` for a job identifier that does not exist, instead of a
|
|
27
|
+
400 or a 404. The routes are live; the service trips over an unknown id.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
_MEDIA_LEGACY = ('application/vnd.SponsoredBrands.'
|
|
31
|
+
'SponsoredBrandsMigrationApi.v4+json')
|
|
32
|
+
_MEDIA_ADMIG = 'application/vnd.sbAdMigration.v4+json'
|
|
33
|
+
|
|
34
|
+
@sp_endpoint('/sb/v4/legacyCampaigns/migrationJob', method='POST')
|
|
35
|
+
def start_migration_job(self, campaignIds, enableThemeTargeting, **kwargs) -> ApiResponse:
|
|
36
|
+
"""
|
|
37
|
+
Starts a migration job for 3.0 campaigns.
|
|
38
|
+
|
|
39
|
+
Request Body [Required]
|
|
40
|
+
| **campaignIds** (array of string): [required] Campaigns to migrate.
|
|
41
|
+
| **enableThemeTargeting** (boolean): [required] Carry theme targets
|
|
42
|
+
into the new campaigns.
|
|
43
|
+
| **isStagedMigration** (boolean): [optional]
|
|
44
|
+
| **newCampaignState** (string): [optional] State for the migrated
|
|
45
|
+
campaigns.
|
|
46
|
+
| **brandEntityId** (string): [optional]
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
| ApiResponse, ``200``.
|
|
50
|
+
|
|
51
|
+
.. warning::
|
|
52
|
+
**This changes the account.** It starts a real migration of 3.0
|
|
53
|
+
campaigns into 4.0, which is not something a probe or a retry should
|
|
54
|
+
trigger by accident. Because of that it was never exercised here: the
|
|
55
|
+
shape comes from the contract only.
|
|
56
|
+
|
|
57
|
+
.. note::
|
|
58
|
+
Do not treat a timeout as a failed migration. The job may be running;
|
|
59
|
+
check ``migration_job_status`` before trying again.
|
|
60
|
+
"""
|
|
61
|
+
body = {'campaignIds': campaignIds, 'enableThemeTargeting': enableThemeTargeting}
|
|
62
|
+
for key in ('isStagedMigration', 'newCampaignState', 'brandEntityId'):
|
|
63
|
+
if key in kwargs:
|
|
64
|
+
body[key] = kwargs.pop(key)
|
|
65
|
+
return self._request(kwargs.pop('path'), data=Utils.convert_body(body, False),
|
|
66
|
+
params=kwargs, headers={'Accept': self._MEDIA_LEGACY,
|
|
67
|
+
'Content-Type': self._MEDIA_LEGACY})
|
|
68
|
+
|
|
69
|
+
@sp_endpoint('/sb/v4/legacyCampaigns/migrationJob/status', method='POST')
|
|
70
|
+
def migration_job_status(self, jobId, **kwargs) -> ApiResponse:
|
|
71
|
+
"""
|
|
72
|
+
Gets the status of a migration job.
|
|
73
|
+
|
|
74
|
+
Request Body [Required]
|
|
75
|
+
| **jobId** (string): [required]
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
| ApiResponse, ``200``.
|
|
79
|
+
|
|
80
|
+
.. note::
|
|
81
|
+
An unknown ``jobId`` answers ``500 INTERNAL_ERROR`` rather than a
|
|
82
|
+
business error. Not a sign that the route is missing.
|
|
83
|
+
"""
|
|
84
|
+
return self._request(kwargs.pop('path'),
|
|
85
|
+
data=Utils.convert_body({'jobId': jobId}, False),
|
|
86
|
+
params=kwargs, headers={'Accept': self._MEDIA_LEGACY,
|
|
87
|
+
'Content-Type': self._MEDIA_LEGACY})
|
|
88
|
+
|
|
89
|
+
@sp_endpoint('/sb/v4/legacyCampaigns/migrationJob/results', method='POST')
|
|
90
|
+
def migration_job_results(self, jobId, **kwargs) -> ApiResponse:
|
|
91
|
+
"""
|
|
92
|
+
Lists the per-campaign results of a migration job.
|
|
93
|
+
|
|
94
|
+
Request Body [Required]
|
|
95
|
+
| **jobId** (string): [required]
|
|
96
|
+
| **nextToken** (string): [optional]
|
|
97
|
+
|
|
98
|
+
Returns:
|
|
99
|
+
| ApiResponse, ``200``.
|
|
100
|
+
|
|
101
|
+
.. note::
|
|
102
|
+
An unknown ``jobId`` answers ``500 INTERNAL_ERROR``, as with the
|
|
103
|
+
status route.
|
|
104
|
+
"""
|
|
105
|
+
return self._request(kwargs.pop('path'),
|
|
106
|
+
data=Utils.convert_body({'jobId': jobId}, False),
|
|
107
|
+
params=kwargs, headers={'Accept': self._MEDIA_LEGACY,
|
|
108
|
+
'Content-Type': self._MEDIA_LEGACY})
|
|
109
|
+
|
|
110
|
+
@sp_endpoint('/sb/v4/legacyCampaigns/overallMigrationResults', method='POST')
|
|
111
|
+
def overall_migration_results(self, **kwargs) -> ApiResponse:
|
|
112
|
+
"""
|
|
113
|
+
Lists every campaign migration result for the advertiser.
|
|
114
|
+
|
|
115
|
+
Request Body [Optional]
|
|
116
|
+
| **nextToken** (string): [optional]
|
|
117
|
+
|
|
118
|
+
Returns:
|
|
119
|
+
| ApiResponse, ``200``. With nothing migrated yet the service answers
|
|
120
|
+
an empty object rather than a list, so do not assume a ``migrations``
|
|
121
|
+
key is always present.
|
|
122
|
+
"""
|
|
123
|
+
return self._request(kwargs.pop('path'),
|
|
124
|
+
data=Utils.convert_body(kwargs.pop('body', {}), False),
|
|
125
|
+
params=kwargs, headers={'Accept': self._MEDIA_LEGACY,
|
|
126
|
+
'Content-Type': self._MEDIA_LEGACY})
|
|
127
|
+
|
|
128
|
+
@sp_endpoint('/sb/v4/migrations/list', method='POST')
|
|
129
|
+
def list_migrations(self, **kwargs) -> ApiResponse:
|
|
130
|
+
"""
|
|
131
|
+
Lists ad migrations.
|
|
132
|
+
|
|
133
|
+
Request Body [Optional]
|
|
134
|
+
| **adGroupIdFilter** ({}): ``include``, a list of ad group ids.
|
|
135
|
+
| **adIdFilter** ({}): ``include``, a list of ad ids.
|
|
136
|
+
| **campaignIdFilter** ({}): ``include``, a list of campaign ids.
|
|
137
|
+
| **adStateFilter** ({}): ``include`` with ``ENABLED``, ``PAUSED``
|
|
138
|
+
or ``ARCHIVED``.
|
|
139
|
+
| **migrationStatusFilter** ({}): ``include`` with ``ACCEPTED``,
|
|
140
|
+
``ELIGIBLE``, ``MIGRATED`` or ``MIGRATION_FAILED``.
|
|
141
|
+
| **maxResults** (number): Page size.
|
|
142
|
+
| **nextToken** (string): Pagination token.
|
|
143
|
+
|
|
144
|
+
Returns:
|
|
145
|
+
| ApiResponse, ``200``, with ``migrations`` and ``totalCount``.
|
|
146
|
+
|
|
147
|
+
Example::
|
|
148
|
+
|
|
149
|
+
{"migrations": [], "totalCount": 0}
|
|
150
|
+
"""
|
|
151
|
+
return self._request(kwargs.pop('path'),
|
|
152
|
+
data=Utils.convert_body(kwargs.pop('body', {}), False),
|
|
153
|
+
params=kwargs, headers={'Accept': self._MEDIA_ADMIG,
|
|
154
|
+
'Content-Type': self._MEDIA_ADMIG})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.1.6"
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/python_amazon_ad_api.egg-info/SOURCES.txt
RENAMED
|
@@ -45,6 +45,7 @@ ad_api/api/sb/keywords.py
|
|
|
45
45
|
ad_api/api/sb/keywords_recommendations.py
|
|
46
46
|
ad_api/api/sb/landing_page_asins.py
|
|
47
47
|
ad_api/api/sb/media.py
|
|
48
|
+
ad_api/api/sb/migration.py
|
|
48
49
|
ad_api/api/sb/negative_keywords.py
|
|
49
50
|
ad_api/api/sb/negative_product_targeting.py
|
|
50
51
|
ad_api/api/sb/optimization_rules.py
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.1.5"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/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
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/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.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/keywords_recommendations.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/landing_page_asins.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/negative_keywords.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/optimization_rules.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/product_targeting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/targeting_categories.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sb/targeting_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/bid_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/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.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/product_targeting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sd/targeting_recommendations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/bid_recommendations_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/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.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/campaign_negative_targets.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/campaigns_budget_usage.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/campaings_optimization.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/negative_keywords_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/sp/product_recommendations.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/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
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/api/validation_configurations.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/ad_api/auth/access_token_client.py
RENAMED
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/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.1.5 → python_amazon_ad_api-1.1.6}/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
|
|
File without changes
|
{python_amazon_ad_api-1.1.5 → python_amazon_ad_api-1.1.6}/python_amazon_ad_api.egg-info/requires.txt
RENAMED
|
File without changes
|
|
File without changes
|