Skip to main content

Api wrapper for YandexDirect API v5

Project description

Yandex Direct Api Wrapper (yandex direct api v5)

Installation

Instal user pip...

pip install yandex-direct-api

Usage

from direct_api import DirectAPI

client = DirectAPI('<access_token>', '<clid>', lang='ru')

AgencyClient:add

name type default value
login str *required
first_name str *required
last_name str *required
currency str *required
grants list None
notification dict None
settings dict None
result = client.AgencyClient.add(login='<login>', first_name='<fname>', last_name='<lname>', currency='RUB')

AgencyClient:get

name type default value
field_names list *required
limit int 500
offset int 0
logins list None
archived str None
result = client.AgencyClient.get(field_names=["ClientId", "ClientInfo"])

AgencyClient:update

name type default value
clients list *required
clients = [{
        "ClientId": 1
        "ClientInfo": 'client info',
    },
]
result = client.AgencyClient.update(clients=clients)

AdExtension:add

name type default value
ad_extensions list *required
ad_extendsions = [{
        "Callout": {"CalloutText": "<callout text>"},
    },
]
result = client.AdExtension.add(ad_extendsions=ad_extendsions)

AdExtension:delete

name type default value
ids list *required
ids = ['1', '2', '3']
result = client.AdExtension.delete(ids)

AdExtension:get

name type default value
field_names list *required
ids list None
types list None
statuses list None
modify_since str None
callout_field_names list None
limit int 500
offset int 0
field_names = ['Id', 'Type', 'Status']
result = client.AdExtension.get(field_names)

AdGroup:add

name type default value
ad_groups list *required
ad_groups = [{'Name': 'Test', 'CampaignId': '123', 'RegionIds'}]
result = client.AdGroup.add(ad_groups)

AdGroup:delete

name type default value
ids list *required
ids = ['123', '124', '125']
result = client.AdGroup.get(ids=ids)

AdGroup:get

name type default value
field_names list *required
ids list None
campaign_ids list None
types list None
statuses list None
serving_statuses list None
app_icon_statuses list None
negative_keyword_shared_set_ids list None
mobile_app_ad_group_field_names list None
dynamic_text_ad_group_field_names list None
dynamic_text_feed_ad_group_field_names list None
limit int 500
offset int 500
field_names = ['AdGroupId', 'Name', 'CampaignId']
result = client.AdGroup.get(field_names=field_names)

AdGroup:update

name type default value
ad_groups list *required
ad_groups = [{'Name': 'Test', 'CampaignId': '123', 'RegionIds', 'AdGroupId': '123'}]
result = client.AdGroup.update(ad_groups)

AdImage:add

name type default value
ad_images list *required
ad_images = [{'Name': 'Test', 'ImageData': '<binary>'}]
result = client.AdImage.add(ad_images)

AdImage:delete

name type default value
hashes list *required
hashes = ['<hash1>', '<hash2>']
result = client.AdImage.delete(hashes)

AdImage:get

name type default value
field_names list *required
ad_images_hashes list None
associated str None
limit init 500
offset init 0
field_names = ['AdImageHash', 'Name']
result = client.AdImage.get(field_names)

Ad:add

name type default value
ads list *required
ads = [{'AdgroupId': '<id>', 'TextAd': {}}]
result = client.Ad.add(ads)

Ad:archive

name type default value
ids list *required
ids = ['123', '124']
result = client.Ad.archive(ids)

Ad:delete

name type default value
ids list *required
ids = ['123', '124']
result = client.Ad.delete(ids)

Ad:get

name type default value
field_names list *required
ids list None
campaign_ids list None
ad_group_ids list None
states list None
statuses list None
types list None
mobile str None
v_card_ids list None
sitelink_set_ids list None
ad_image_hashes list None
v_card_moderation_statuses list None
sitelink_moderation_statuses list None
ad_image_moderation_statuses list None
ad_extension_ids list None
text_ad_field_names list None
text_ad_price_extension_field_names list None
mobile_app_field_names list None
dynamic_text_ad_field_names list None
mobile_app_image_ad_field_names list None
text_ad_builder_ad_field_names list None
mobile_app_ad_builder_ad_field_names list None
cpc_video_ad_builder_ad_field_names list None
cpm_banner_ad_builder_ad_field_names list None
cpm_video_ad_builder_ad_field_names list None
limit int 500
offset int 0
field_names = ['Id', 'CampaignId']
result = client.Ad.get(field_names)

Ad:moderate

name type default value
ids list *required
ids = ['123', '124']
result = client.Ad.moderate(ids)

Ad:resume

name type default value
ids list *required
ids = ['123', '124']
result = client.Ad.resume(ids)

Ad:suspend

name type default value
ids list *required
ids = ['123', '124']
result = client.Ad.suspend(ids)

Ad:unarchive

name type default value
ids list *required
ids = ['123', '124']
result = client.Ad.unarchive(ids)

Ad:update

name type default value
ads list *required
ads = [{'AdgroupId': '<id>', 'TextAd': {}, 'Id': '<Id>'}]
result = client.Ad.update(ads)

AudienceTarget:add

name type default value
ads list *required
ads = [{'AdgroupId': '<id>', }]
result = client.AudienceTarget.add(ids)

AudienceTarget:delete

name type default value
ids list *required
ids = ['232324353']
result = client.AudienceTarget.delete(ids)

AudienceTarget:get_audience_targets

name type default value
field_names list *required
ids list None
ad_group_ids list None
campaign_ids list None
retargeting_list_ids list None
interest_ids list None
states list None
limit int 500
offset int 0
field_names = ['Id']
result = client.AudienceTarget.get_audience_targets(field_names, campaigns_ids=[123])

AudienceTarget:resume

name type default value
ids list *required
ids = ['232324353']
result = client.AudienceTarget.resume(ids)

AudienceTarget:set_bids

name type default value
bids list *required
bids = [{'Id': '<id>', 'AdGroupId': '<Id>'}]
result = client.AudienceTarget.set_bids(bids)

Bid:get

name type default value
field_names list *required
keyword_ids list None
ad_group_ids list None
campaign_ids list None
serving_statuses list None
limit int 500
offset int 0
field_names = ['Id']
result = client.Bid.suspend(field_names, campaign_ids=[1232424532])

Bid:set

name type default value
bids list *required
bids = [{'Bid': '<long>'}]
result = client.Bid.set(bids)

Bid:set_auto

name type default value
bids list *required
bids = [{'CampaignID': '<long>', 'Scope': 'SEARCH'}]
result = client.Bid.set_auto(bids)

BidsModifier:add

name type default value
bid_modifiers list *required
bid_modifiers = [{'MobileAdjustment': {'BidModifier': '<id>'}}]
result = client.BidsModifier.add(bid_modifiers)

BidsModifier:delete

name type default value
ids list *required
ids = ['1312324343']
result = client.BidsModifier.delete(ids)

BidsModifier:get

name type default value
field_names list *required
ids list None
campaign_ids list None
ad_group_ids list None
types list None
levels list None
mobile_adjustment_field_names list None
desktop_adjustment_field_names list None
demographics_adjustment_field_names list None
retargeting_adjustment_field_names list None
regional_adjustment_field_names list None
video_adjustment_field_names list None
limit list 500
offset list 0
field_names = ['Id', 'CampaignId', 'Type']
result = client.BidsModifier.get(field_names, campaign_ids=['123453534'])

BidsModifier:set

name type default value
bid_modifiers list *required
ids = [{'Id': '<id>', 'BidModifier': 124242}]
result = client.BidsModifier.set(bid_modifiers)

BidsModifier:toggle

name type default value
bid_modifier_toggle_items list *required
bid_modifier_toggle_items = [{'CampaignId': '<id>', 'Type': "DEMOGRAPHICS_ADJUSTMENT","Enabled": "YES"}]
result = client.BidsModifier.toggle(bid_modifier_toggle_items)

Campaign:add

name type default value
campaigns list *required
campaign_item = {} # campaign object
campaigns = [campaign_item]
result = client.Campaign.add(campaigns)

Campaign:archive

name type default value
ids list *required
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.archive(ids)

Campaign:delete

name type default value
ids list *required
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.delete(ids)

Campaign:get

name type default value
field_names list *required
ids list None
types list None
states list None
statuses list None
statuses_payments list None
text_campaign_field_names list None
mobile_app_campaign_field_names list None
dynamic_text_campaign_field_names list None
cpm_banner_campaign_field_names list None
limit int 500
offset int 0
field_names = ['Id', 'Name', 'Type']
result = client.Campaign.get(field_names=field_names)

Campaign:resume

name type default value
ids list *required
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.resume(ids)

Campaign:suspend

name type default value
ids list *required
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.suspend(ids)

Campaign:unarchive

name type default value
ids list *required
ids = ['12312535', '345345345', '23432325345']
result = client.Campaign.unarchive(ids)

Campaign:update

name type default value
campaigns list *required
campaigns = [{'Id': '12312535','Name': 'updated!']
result = client.Campaign.unarchive(campaigns)

Change:check_dictionaries

name type default value
timestamp int *required
from time import time

timestamp = int(time.now()- 1800)
result = client.Change.check_dictionaries(timestamp)

Change:check_campaigns

name type default value
timestamp int *required
from time import time

timestamp = int(time.now()- 1800)
result = client.Change.check_campaigns(timestamp)

Change:check

name type default value
timestamp int *required
field_names list *required
campaign_ids list None
ad_group_ids list None
ad_ids list None
from time import time

timestamp = int(time.now()- 1800)
field_names = ['Id', 'Name']
result = client.Change.check(timestamp, fiel_names)

Creative:get

name type default value
field_names list *required
ids list None
types list None
video_extension_creative_field_names list None
cpc_video_creative_field_names list None
cpm_video_creative_field_names list None
limit int 10000
offset int 0
field_names = ['Id', 'Name', 'Type', 'PreviewUrl']
result = client.Creative.get(field_names)

Dictionary:get

name type default value
dictionary_names list *required
dictionary_names = ['TimeZones', 'Currencies']
result = client.Dictionary.get(dictionary_names)

DynamicTextAdTarget:add

name type default value
webpages list *required
bid list None
context_bid str None
context_bid str None
strategy_priority str None
webpages = [{'Name': 'Test', 'AdGroupId': '123242453253'}]
result = client.DynamicTextAdTarget.add(webpages)

DynamicTextAdTarget:delete

name type default value
ids list *required
ids = ['213232432432']
result = client.DynamicTextAdTarget.delete(ids)

DynamicTextAdTarget:get

name type default value
field_names list *required
ids list None
ad_group_ids list None
campaign_ids list None
states list None
limit int 10000
offset int 0
ids = ['AdGroupId', 'Bid']
result = client.DynamicTextAdTarget.get(ids)

DynamicTextAdTarget:resume

name type default value
ids list *required
ids = ['213232432432']
result = client.DynamicTextAdTarget.resume(ids)

DynamicTextAdTarget:suspend

name type default value
ids list *required
ids = ['213232432432']
result = client.DynamicTextAdTarget.suspend(ids)

DynamicTextAdTarget:set_bids

name type default value
bids list *required
set_bit_item = {} # set bid item from doc
bids = [set_bit_item]
result = client.DynamicTextAdTarget.set_bids(bids)

KeywordBid:get

name type default value
field_names list *required
campaign_ids list None
ad_group_ids list None
keyword_ids list None
serving_statuses list None
search_field_names list None
network_field_names list None
limit int 10000
offset int 0
field_names = ['Id']
campaign_ids = ['123123212353']
result = client.KeywordBid.get(field_names, campaign_ids=campaign_ids)

KeywordBid:set

name type default value
keyword_bids list *required
set_bit_item = {} # set bid item from doc
keyword_bids = [set_bit_item]
result = client.KeywordBid.set(keyword_bids)

KeywordBid:set_auto

name type default value
keyword_bids list *required
set_bit_item = {} # set bid item from doc
keyword_bids = [set_bit_item]
result = client.KeywordBid.set_auto(keyword_bids)

Keyword:add

name type default value
keywords list *required
keyword = {"Keyworod": "yandex-dircet-api-python", "AdGroupId": "12324324334"}
keywords = [keyword]
result = client.Keyword.add(keywords)

Keyword:delete

name type default value
ids list *required
ids = ['1232432547357348']
result = client.Keyword.delete(ids)

Keyword:get

name type default value
field_names list *required
ids list None
ad_group_ids list None
campaign_ids list None
states list None
statuses list None
serving_statuses list None
modified_since str None
limit int 10000
offset int 0
field_names = ['Id', 'Keyword']
result = client.Keyword.delete(field_names, campaign_ids=['23232343583'])

Keyword:resume

name type default value
ids list *required
ids = ['1232432547357348']
result = client.Keyword.resume(ids)

Keyword:suspend

name type default value
ids list *required
ids = ['1232432547357348']
result = client.Keyword.resume(ids)

Keyword:update

name type default value
keywords list *required
keywords = [{'Id': '123123243534', 'Keyword': 'updated yandex'}]
result = client.Keyword.update(keywords)

KeywordsResearch:deduplicate

name type default value
keywords list *required
operation list None
keywords = [{'Id': '123123243534', 'Keyword': 'updated yandex'}]
operation  = 'MERGE_DUPLICATES'
result = client.KeywordsResearch.deduplicate(keywords, operation)

KeywordsResearch:has_search_volume

name type default value
field_names list *required
keywords list *required
region_ids list *required
field_names = ['Keyword']
keywords = [{'Id': '123123243534', 'Keyword': 'updated yandex'}]
region_ids  = ['123123123']
result = client.KeywordsResearch.has_search_volume(field_names, keywords, region_ids)

Lead:get

name type default value
field_names list *required
turbo_page_ids list None
date_time_from str None
date_time_to str None
limit int 10000
offset int 0
field_names = ['TurboPageId', 'TurboPageName', 'id']
result = client.Lead.get(field_names)

NegativeKeywordSharedSet:add

name type default value
negative_keyword_shared_sets list *required
negative_keyword_shared_sets = [{'Name': 'name', 'NegativeKeywords': [123]}]
result = client.Lead.get(negative_keyword_shared_sets)

NegativeKeywordSharedSet:delete

name type default value
ids list *required
ids = [12312325]
result = client.NegativeKeywordSharedSet.delete(ids)

NegativeKeywordSharedSet:get

name type default value
field_names list *required
ids list None
limit int 10000
offset int 0
field_names = ['Id', 'Name', 'NegativeKeywords']
result = client.NegativeKeywordSharedSet.get(field_names)

NegativeKeywordSharedSet:update

name type default value
negative_keyword_shared_sets list *required
negative_keyword_shared_sets = [{'Id': '12324234234', 'Name': 'test', 'NegativeKeywords': ['1231321']}]
result = client.NegativeKeywordSharedSet.update(negative_keyword_shared_sets)

RetargetingList:add

name type default value
retargeting_list list *required
retargeting_obj = {} # object from doc
retargeting_list = [retargeting_obj]
result = client.RetargetingList.add(retargeting_list)

RetargetingList:delete

name type default value
ids list *required
ids = [12313254325345345353]
result = client.RetargetingList.delete(ids)

RetargetingList:get

name type default value
field_names list *required
ids list None
types list None
limit int 10000
offset int 0
field_names = ['Type', 'Id', 'Name']
ids = [12313254325345345353]
result = client.RetargetingList.get(field_names, ids=ids)

RetargetingList:update

name type default value
retargeting_list list *required
retargeting_obj = {} # object from doc
retargeting_list = [retargeting_obj]
result = client.RetargetingList.update(retargeting_list)

Sitelink:add

name type default value
sitelinks_sets list *required
sitelinks = [{'Title': 'sitelink1'}]
sitelinks_sets = [sitelinks]
result = client.Sitelink.add(sitelinks_sets)

Sitelink:delete

name type default value
ids list *required
ids = [12313254325345345353]
result = client.Sitelink.delete(ids)

Sitelink:get

name type default value
field_names list *required
ids list None
sitelinks_field_names list None
limit int 10000
offset int 0
field_names = ['Id', 'Sitelinks']
result = client.Sitelink.get(field_names)

TurboPage:get

name type default value
field_names list *required
ids list None
limit int 10000
offset int 0
field_names = ['Id', 'Name', 'Href']
result = client.TurboPage.get(field_names)

VCard:add

name type default value
vcards list *required
vcard = {
    'CampaignId': '1231231232131',
    'Country': '<country>',
    'City': '<City>',
    'CompanyName': '<CompanyName>',
}
vcards = [vcard]
result = client.VCard.add(vcards)

VCard:delete

name type default value
ids list *required
ids = [12313254325345345353]
result = client.Sitelink.delete(ids)

VCard:get

name type default value
field_names list *required
ids list None
limit int 10000
offset int 0
field_names = ['Id', 'Country', 'City']
result = client.VCard.get(field_names)

Report:get

name type default value
selection_criteria list *required
field_names list *required
report_name str *required
report_type str *required
date_range_type str *required
processing_mode str auto
headers dict None
goals list None
attribution_models list None
page dict None
order_by list None
format str TSV
include_vat str YES
include_discount str NO
selection_criteria= {
    "DateFrom": date_from.strftime('%Y-%m-%d'),
    "DateTo": date_to.strftime('%Y-%m-%d'),
}

field_names = [
    "Date",
    "Impressions",
    "Clicks",
    "Cost",
    "CriterionId",
    "Criterion",
    "CampaignId",
    "AdId",
    "Device",
    "AdGroupId",
    "CampaignType",
    "AvgClickPosition",
    "Slot",
    "LocationOfPresenceId",
    "Placement",
    "AvgImpressionPosition",
    "LocationOfPresenceName",
    "CampaignName",
    "AdNetworkType",
]
page = {"Limit": 100000000},
report_name = f"ActualData - 123"
report_type = "CUSTOM_REPORT",
date_range_type = "CUSTOM_DATE"
result = client.Report.get(
    selection_criteria=selection_criteria,
    field_names=field_names,
    report_name=report_name,
    report_type=report_type,
    date_range_type=date_range_type,
    page=page,
)

Client:add

name type default value
login str *required
first_name str *required
last_name str *required
currency str *required
grants list None
notification dict None
settings dict None
result = client.Client.add(login='clid', first_name='ivan', last_name='petrov', currency='RUB')

Client:get

name type default value
field_names list *required
logins list None
archived str None
limit int 500
offset int 0
field_names = ['ClientId', 'ClientInfo']
result = client.Client.get(field_names)

TODO:

  • examples
  • tests
  • docs
  • Travis CI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yandex-direct-api-0.0.1.tar.gz (22.0 kB view details)

Uploaded Source

File details

Details for the file yandex-direct-api-0.0.1.tar.gz.

File metadata

  • Download URL: yandex-direct-api-0.0.1.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.7.5

File hashes

Hashes for yandex-direct-api-0.0.1.tar.gz
Algorithm Hash digest
SHA256 8c4e3d89f8d4b83298889d00ff98a6508e00df3f7854e0548cfe564162081e12
MD5 f39c5c90120c928267682049c34f4b0a
BLAKE2b-256 24c1dc5b689774292242e1ae8ffd71c9bb08c2064e69483e237c24ef3c72f96c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page